summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordipanshu124 <dipanshu@iitk.ac.in>2021-03-11 16:09:43 +0530
committerJim Raykowski <raykowj@gmail.com>2021-03-14 16:13:31 +0100
commitd97528da0c70c43fccd3239cbe8e064c3480bba8 (patch)
tree57a8bc78136598c77f6c2e9589f2f974bde38967
parent0adf52a644aaf85ba2bd666147c62c134234ffbb (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.xcu48
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu8
-rw-r--r--sw/inc/cmdid.h1
-rw-r--r--sw/inc/view.hxx13
-rw-r--r--sw/sdi/_viewsh.sdi4
-rw-r--r--sw/sdi/swriter.sdi16
-rw-r--r--sw/source/uibase/uiview/view2.cxx38
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 &&