diff options
author | dipanshu124 <dipanshu@iitk.ac.in> | 2021-03-11 16:09:43 +0530 |
---|---|---|
committer | Jim Raykowski <raykowj@gmail.com> | 2021-03-14 16:13:31 +0100 |
commit | d97528da0c70c43fccd3239cbe8e064c3480bba8 (patch) | |
tree | 57a8bc78136598c77f6c2e9589f2f974bde38967 | |
parent | 0adf52a644aaf85ba2bd666147c62c134234ffbb (diff) |
tdf#137494 Add Select Cycle uno command
Assign F8 for toggling SelWrd > SelSentence > SelPara > Unselect.
Reassign Extend Selection to Alt+F8.
Change-Id: I2fc03c70a5786a629169178e64a0b0fd85ba2742
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112326
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/Accelerators.xcu | 48 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu | 8 | ||||
-rw-r--r-- | sw/inc/cmdid.h | 1 | ||||
-rw-r--r-- | sw/inc/view.hxx | 13 | ||||
-rw-r--r-- | sw/sdi/_viewsh.sdi | 4 | ||||
-rw-r--r-- | sw/sdi/swriter.sdi | 16 | ||||
-rw-r--r-- | sw/source/uibase/uiview/view2.cxx | 38 |
7 files changed, 122 insertions, 6 deletions
diff --git a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu index 967aa98a04db..fbccb8a9b0f8 100644 --- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu @@ -2329,12 +2329,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> @@ -3740,12 +3746,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> @@ -4521,12 +4533,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> @@ -5301,12 +5319,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> @@ -6107,12 +6131,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> @@ -6933,12 +6963,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="en-US">.uno:ThesaurusDialog</value> </prop> </node> - <node oor:name="F8" oor:op="replace"> + <node oor:name="F8_MOD2" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> <value xml:lang="en-US">.uno:SetExtSelection</value> </prop> </node> + <node oor:name="F8" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SelectionCycle</value> + </prop> + </node> <node oor:name="F8_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index d90b820daba5..3bab821f6381 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -2586,6 +2586,14 @@ <value xml:lang="en-US">Select Paragraph</value> </prop> </node> + <node oor:name=".uno:SelectionCycle" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Select Cycle</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:GoToNextPara" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">To Next Paragraph</value> diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index c47002b4b90c..3b8194f52ec4 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -726,6 +726,7 @@ #define FN_TO_NEXT_PAGE (FN_SELECTION + 95) #define FN_TO_PREV_PAGE (FN_SELECTION + 96) +#define FN_SELECTION_CYCLE (FN_SELECTION + 97) // QUERY-Block #define FN_TXTATR_INET (FN_QUERY +29) /* INet-Attribute */ diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx index f51a80aea1a3..2b7fe95094ec 100644 --- a/sw/inc/view.hxx +++ b/sw/inc/view.hxx @@ -148,6 +148,18 @@ class SW_DLLPUBLIC SwView: public SfxViewShell friend class SwView_Impl; friend class SwClipboardChangeListener; + // selection cycle + struct SelectCycle + { + Point m_pInitialCursor; + Point m_MarkPt; + Point m_PointPt; + sal_uInt16 nStep; + + SelectCycle() : + nStep(0) {} + }; + // search & replace static SvxSearchItem *s_pSrchItem; @@ -253,6 +265,7 @@ class SW_DLLPUBLIC SwView: public SfxViewShell /// functionality based on the user's view, instead of using the m_aVisArea. SwTwips m_nLOKPageUpDownOffset; + SelectCycle m_aSelectCycle; // methods for searching // set search context SAL_DLLPRIVATE bool SearchAndWrap(bool bApi); diff --git a/sw/sdi/_viewsh.sdi b/sw/sdi/_viewsh.sdi index f55496ee26a4..3e14394f03b5 100644 --- a/sw/sdi/_viewsh.sdi +++ b/sw/sdi/_viewsh.sdi @@ -45,6 +45,10 @@ interface BaseTextEditView [ ExecMethod = Execute ; ] + FN_SELECTION_CYCLE + [ + ExecMethod = Execute ; + ] FN_PAGEUP // status(final|play) [ ExecMethod = Execute ; diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index da34afb576f8..c560b85b6dc4 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -4692,6 +4692,22 @@ SfxVoidItem GoToNextPage FN_TO_NEXT_PAGE GroupId = SfxGroupId::Navigator; ] +SfxVoidItem SelectionCycle FN_SELECTION_CYCLE +() +[ + AutoUpdate = FALSE, + FastCall = TRUE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::Navigator; +] SfxUInt16Item PageOffsetDialog FN_CHANGE_PAGENUM (SfxUInt16Item nOffset FN_CHANGE_PAGENUM) [ diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx index bf756f9b7aa7..83ea79dc3beb 100644 --- a/sw/source/uibase/uiview/view2.cxx +++ b/sw/source/uibase/uiview/view2.cxx @@ -632,6 +632,44 @@ void SwView::Execute(SfxRequest &rReq) } } break; + case FN_SELECTION_CYCLE: + { + if (m_pWrtShell->IsSelFrameMode()) + break; + if (!m_pWrtShell->IsStdMode()) + m_pWrtShell->EnterStdMode(); + SwShellCursor *pCursor = m_pWrtShell->SwCursorShell::GetCursor_(); + Point CurrMarkPt = pCursor->GetMkPos(); + Point CurrPointPt = pCursor->GetPtPos(); + sal_uInt16 nStep = m_aSelectCycle.nStep; + if (nStep && (CurrMarkPt != m_aSelectCycle.m_MarkPt || CurrPointPt != m_aSelectCycle.m_PointPt)) + nStep = 0; + switch(nStep) + { + case 0: + m_aSelectCycle.m_pInitialCursor = CurrPointPt; + m_pWrtShell->SwCursorShell::ClearMark(); + m_pWrtShell->SelWrd(&CurrPointPt); + break; + case 1: + m_pWrtShell->SelSentence(&CurrPointPt); + break; + case 2: + m_pWrtShell->SelPara(&CurrPointPt); + break; + case 3: + m_pWrtShell->SwCursorShell::ClearMark(); + m_pWrtShell->SwCursorShell::SetCursor(m_aSelectCycle.m_pInitialCursor); + break; + } + nStep++; + nStep %= 4; + pCursor = m_pWrtShell->SwCursorShell::GetCursor_(); + m_aSelectCycle.m_MarkPt = pCursor->GetMkPos(); + m_aSelectCycle.m_PointPt = pCursor->GetPtPos(); + m_aSelectCycle.nStep = nStep; + } + break; case FN_REDLINE_ON: { if( pArgs && |