[Libreoffice-commits] core.git: officecfg/registry sw/inc sw/sdi sw/source

dipanshu124 (via logerrit) logerrit at kemper.freedesktop.org
Sun Mar 14 15:14:19 UTC 2021


 officecfg/registry/data/org/openoffice/Office/Accelerators.xcu      |   48 ++++++++--
 officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu |    8 +
 sw/inc/cmdid.h                                                      |    1 
 sw/inc/view.hxx                                                     |   13 ++
 sw/sdi/_viewsh.sdi                                                  |    4 
 sw/sdi/swriter.sdi                                                  |   16 +++
 sw/source/uibase/uiview/view2.cxx                                   |   38 +++++++
 7 files changed, 122 insertions(+), 6 deletions(-)

New commits:
commit d97528da0c70c43fccd3239cbe8e064c3480bba8
Author:     dipanshu124 <dipanshu at iitk.ac.in>
AuthorDate: Thu Mar 11 16:09:43 2021 +0530
Commit:     Jim Raykowski <raykowj at gmail.com>
CommitDate: Sun Mar 14 16:13:31 2021 +0100

    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 at gmail.com>

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 &&


More information about the Libreoffice-commits mailing list