officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu |   12 ++-
 sc/inc/sc.hrc                                                     |    5 -
 sc/sdi/cellsh.sdi                                                 |    3 
 sc/sdi/scalc.sdi                                                  |   19 ++++
 sc/source/ui/view/cellsh1.cxx                                     |   40 
+++++++++-
 sc/uiconfig/scalc/menubar/menubar.xml                             |    3 
 6 files changed, 74 insertions(+), 8 deletions(-)

New commits:
commit 6ab08b3b1026a582352ea018b9d59e91d3e86d92
Author:     Tünde Tóth <toth.tu...@nisz.hu>
AuthorDate: Thu Feb 18 09:35:17 2021 +0100
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Thu Feb 25 16:49:33 2021 +0100

    tdf#36466 sc UI: add new options to deselect hidden cells
    
    Implement "Select Visible Rows Only" option to deselect
    the cells of the hidden rows in the actual selection.
    
    Implement "Select Visible Columns Only" option to deselect
    the cells of the hidden columns in the actual selection.
    
    Test e.g. on some data on A1:C1:
    
    1) hide column B (don't try to test with autofilter,
       because copying of the filtered cells has already
       worked this way).
    2) Select A1:C1 (2 visible cells)
    3) Choose Edit->Select->Select Visible Columns Only
       (no visual feedback)
    4) Copy the selection.
    5) Paste it e.g. in D2: only A1 and C1 are copied,
       but not B1.
    
    Change-Id: I354ebdf6be6bddae4440f3e9b4929c6e82abc1df
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111100
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
index 919237963507..77a9015986cf 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
@@ -585,9 +585,17 @@
           <value>1</value>
         </prop>
       </node>
-      <node oor:name=".uno:SelectVisibleCells" oor:op="replace">
+      <node oor:name=".uno:SelectVisibleRows" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">Select Visible Cells Only</value>
+          <value xml:lang="en-US">Select Visible Rows Only</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:SelectVisibleColumns" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Select Visible Columns Only</value>
         </prop>
         <prop oor:name="Properties" oor:type="xs:int">
           <value>1</value>
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index 55be197e79c4..4e0001d3f1ff 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -603,8 +603,9 @@
 #define FID_DELETE_ALL_NOTES    (SID_NEW_SLOTS+104)
 #define SID_SCATTR_CELLPROTECTION    (SID_NEW_SLOTS+105)
 #define SID_SELECT_UNPROTECTED_CELLS (SID_NEW_SLOTS+106)
-#define SID_SELECT_VISIBLE_CELLS     (SID_NEW_SLOTS+107)
-#define SID_CURRENT_FORMULA_RANGE    (SID_NEW_SLOTS+108)
+#define SID_SELECT_VISIBLE_ROWS      (SID_NEW_SLOTS+107)
+#define SID_SELECT_VISIBLE_COLUMNS   (SID_NEW_SLOTS+108)
+#define SID_CURRENT_FORMULA_RANGE    (SID_NEW_SLOTS+109)
 // idl parameter
 
 #define SID_SORT_BYROW          (SC_PARAM_START)
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index cbc20f2f8959..e75d9b3fcc11 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -230,7 +230,8 @@ interface CellSelection
     SID_DEC_INDENT                      [ ExecMethod = ExecuteEdit; 
StateMethod = GetState; ]
     SID_INC_INDENT                      [ ExecMethod = ExecuteEdit; 
StateMethod = GetState; ]
     SID_SELECT_UNPROTECTED_CELLS        [ ExecMethod = ExecuteEdit;]
-    SID_SELECT_VISIBLE_CELLS            [ ExecMethod = ExecuteEdit;]
+    SID_SELECT_VISIBLE_ROWS             [ ExecMethod = ExecuteEdit;]
+    SID_SELECT_VISIBLE_COLUMNS          [ ExecMethod = ExecuteEdit;]
     SID_CURRENT_FORMULA_RANGE           [ ExecMethod = ExecuteEdit;]
 
     SID_THESAURUS   [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index fae369fa24a8..fbbbe1809873 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -4453,7 +4453,24 @@ SfxVoidItem SelectUnprotectedCells 
SID_SELECT_UNPROTECTED_CELLS
     GroupId = SfxGroupId::Edit;
 ]
 
-SfxVoidItem SelectVisibleCells SID_SELECT_VISIBLE_CELLS
+SfxVoidItem SelectVisibleRows SID_SELECT_VISIBLE_ROWS
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+
+    AccelConfig = FALSE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = FALSE,
+    GroupId = SfxGroupId::Edit;
+]
+
+SfxVoidItem SelectVisibleColumns SID_SELECT_VISIBLE_COLUMNS
 ()
 [
     AutoUpdate = FALSE,
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index f529e34b6140..d619b461d6c3 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -2768,7 +2768,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
             }
             break;
 
-        case SID_SELECT_VISIBLE_CELLS:
+        case SID_SELECT_VISIBLE_ROWS:
             {
                 ScViewData& rData = GetViewData();
                 ScMarkData& rMark = rData.GetMarkData();
@@ -2806,6 +2806,44 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
             }
             break;
 
+        case SID_SELECT_VISIBLE_COLUMNS:
+            {
+                ScViewData& rData = GetViewData();
+                ScMarkData& rMark = rData.GetMarkData();
+                ScDocument& rDoc = rData.GetDocument();
+
+                rMark.MarkToMulti();
+
+                ScRange aMultiArea;
+                rMark.GetMultiMarkArea(aMultiArea);
+                SCCOL nStartCol = aMultiArea.aStart.Col();
+                SCROW nStartRow = aMultiArea.aStart.Row();
+                SCCOL nEndCol = aMultiArea.aEnd.Col();
+                SCROW nEndRow = aMultiArea.aEnd.Row();
+
+                bool bChanged = false;
+                for (const SCTAB& nTab : rMark)
+                {
+                    for (SCCOL nCol = nStartCol; nCol <= nEndCol; ++nCol)
+                    {
+                        SCCOL nLastCol = nCol;
+                        if (rDoc.ColHidden(nCol, nTab, nullptr, &nLastCol))
+                        {
+                            rMark.SetMultiMarkArea(
+                                ScRange(nCol, nStartRow, nTab, nLastCol, 
nEndRow, nTab), false);
+                            bChanged = true;
+                            nCol = nLastCol;
+                        }
+                    }
+                }
+
+                if (bChanged && !rMark.HasAnyMultiMarks())
+                    rMark.ResetMark();
+
+                rMark.MarkToSimple();
+            }
+            break;
+
         case SID_CURRENT_FORMULA_RANGE:
             {
                 const SfxInt32Item* param1 = 
rReq.GetArg<SfxInt32Item>(FN_PARAM_1);
diff --git a/sc/uiconfig/scalc/menubar/menubar.xml 
b/sc/uiconfig/scalc/menubar/menubar.xml
index f413f7a6b627..ee6527266192 100644
--- a/sc/uiconfig/scalc/menubar/menubar.xml
+++ b/sc/uiconfig/scalc/menubar/menubar.xml
@@ -110,7 +110,8 @@
           <menu:menuitem menu:id=".uno:SelectColumn"/>
           <menu:menuitem menu:id=".uno:SelectData"/>
           <menu:menuitem menu:id=".uno:SelectUnprotectedCells"/>
-          <menu:menuitem menu:id=".uno:SelectVisibleCells"/>
+          <menu:menuitem menu:id=".uno:SelectVisibleRows"/>
+          <menu:menuitem menu:id=".uno:SelectVisibleColumns"/>
         </menu:menupopup>
       </menu:menu>
       <menu:menuseparator/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to