cui/source/options/optcolor.cxx                        |    1 
 cui/uiconfig/ui/colorconfigwin.ui                      |   77 +++++++++++++----
 include/svtools/colorcfg.hxx                           |    1 
 officecfg/registry/data/org/openoffice/Office/UI.xcu   |   16 +++
 officecfg/registry/schema/org/openoffice/Office/UI.xcs |   16 +++
 sc/source/ui/inc/gridwin.hxx                           |    1 
 sc/source/ui/view/gridwin4.cxx                         |   38 ++++++++
 svtools/source/config/colorcfg.cxx                     |    2 
 8 files changed, 135 insertions(+), 17 deletions(-)

New commits:
commit ba0100be03c6bbc5ae10201bae340b3f7b7c4500
Author:     Heiko Tietze <tietze.he...@gmail.com>
AuthorDate: Tue Jan 18 12:20:57 2022 +0100
Commit:     Heiko Tietze <heiko.tie...@documentfoundation.org>
CommitDate: Thu Jan 27 10:31:52 2022 +0100

    Resolves tdf#128258 - Draw a dotted line before hidden columns/rows
    
    Color and on/off configurable via Tools > Options > Application Colors
    
    Change-Id: Ia4b1e1c86f36d1b0f508a5b3e866a79418f16c5a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128553
    Tested-by: Jenkins
    Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org>

diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx
index 81030a79e9c8..0bf654b3e031 100644
--- a/cui/source/options/optcolor.cxx
+++ b/cui/source/options/optcolor.cxx
@@ -127,6 +127,7 @@ const vEntryInfo[] =
     { Group_Calc,    IDS(brk) },
     { Group_Calc,    IDS(brkmanual) },
     { Group_Calc,    IDS(brkauto) },
+    { Group_Calc,    IDS_CB(hiddencolrow) },
     { Group_Calc,    IDS(det) },
     { Group_Calc,    IDS(deterror) },
     { Group_Calc,    IDS(ref) },
diff --git a/cui/uiconfig/ui/colorconfigwin.ui 
b/cui/uiconfig/ui/colorconfigwin.ui
index c25ddba4cf7d..319ac0e483ec 100644
--- a/cui/uiconfig/ui/colorconfigwin.ui
+++ b/cui/uiconfig/ui/colorconfigwin.ui
@@ -795,7 +795,7 @@
         <property name="label-xalign">0</property>
         <property name="shadow-type">none</property>
         <child>
-          <!-- n-columns=2 n-rows=12 -->
+          <!-- n-columns=2 n-rows=13 -->
           <object class="GtkGrid" id="gdCalc">
             <property name="visible">True</property>
             <property name="can-focus">False</property>
@@ -944,7 +944,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">4</property>
+                <property name="top-attach">5</property>
               </packing>
             </child>
             <child>
@@ -961,7 +961,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">4</property>
+                <property name="top-attach">5</property>
               </packing>
             </child>
             <child>
@@ -978,7 +978,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">5</property>
+                <property name="top-attach">6</property>
               </packing>
             </child>
             <child>
@@ -993,7 +993,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">5</property>
+                <property name="top-attach">6</property>
               </packing>
             </child>
             <child>
@@ -1010,7 +1010,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">6</property>
+                <property name="top-attach">7</property>
               </packing>
             </child>
             <child>
@@ -1025,7 +1025,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">6</property>
+                <property name="top-attach">7</property>
               </packing>
             </child>
             <child>
@@ -1042,7 +1042,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">7</property>
+                <property name="top-attach">8</property>
               </packing>
             </child>
             <child>
@@ -1057,7 +1057,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">7</property>
+                <property name="top-attach">8</property>
               </packing>
             </child>
             <child>
@@ -1074,7 +1074,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">8</property>
+                <property name="top-attach">9</property>
               </packing>
             </child>
             <child>
@@ -1089,7 +1089,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">8</property>
+                <property name="top-attach">9</property>
               </packing>
             </child>
             <child>
@@ -1106,7 +1106,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">9</property>
+                <property name="top-attach">10</property>
               </packing>
             </child>
             <child>
@@ -1121,7 +1121,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">9</property>
+                <property name="top-attach">10</property>
               </packing>
             </child>
             <child>
@@ -1138,7 +1138,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">10</property>
+                <property name="top-attach">11</property>
               </packing>
             </child>
             <child>
@@ -1153,7 +1153,7 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">10</property>
+                <property name="top-attach">11</property>
               </packing>
             </child>
             <child>
@@ -1170,7 +1170,7 @@
               </object>
               <packing>
                 <property name="left-attach">1</property>
-                <property name="top-attach">11</property>
+                <property name="top-attach">12</property>
               </packing>
             </child>
             <child>
@@ -1185,7 +1185,50 @@
               </object>
               <packing>
                 <property name="left-attach">0</property>
-                <property name="top-attach">11</property>
+                <property name="top-attach">12</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="hiddencolrow">
+                <property name="label" translatable="yes" 
context="colorconfigwin|hiddencolrow">Hidden columns/rows</property>
+                <property name="visible">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">False</property>
+                <property name="halign">start</property>
+                <property name="valign">center</property>
+                <property name="draw-indicator">True</property>
+                <accessibility>
+                  <relation type="label-for" target="hiddencolrow_lb"/>
+                </accessibility>
+              </object>
+              <packing>
+                <property name="left-attach">0</property>
+                <property name="top-attach">4</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkMenuButton" id="hiddencolrow_lb">
+                <property name="visible">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">False</property>
+                <property name="halign">end</property>
+                <property name="draw-indicator">True</property>
+                <property name="label" translatable="no"></property>
+                <child>
+                  <placeholder/>
+                </child>
+                <accessibility>
+                  <relation type="labelled-by" target="hiddencolrow"/>
+                </accessibility>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="hiddencolrow_lb-atkobject">
+                    <property name="AtkObject::accessible-name" 
translatable="yes" context="colorconfigwin|hiddencolrow_lb">Hidden row/column 
color</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">1</property>
+                <property name="top-attach">4</property>
               </packing>
             </child>
           </object>
diff --git a/include/svtools/colorcfg.hxx b/include/svtools/colorcfg.hxx
index c7a811140ef3..562d4a3e4670 100644
--- a/include/svtools/colorcfg.hxx
+++ b/include/svtools/colorcfg.hxx
@@ -56,6 +56,7 @@ enum ColorConfigEntry
     CALCPAGEBREAK       ,
     CALCPAGEBREAKMANUAL,
     CALCPAGEBREAKAUTOMATIC,
+    CALCHIDDENROWCOL    ,
     CALCDETECTIVE       ,
     CALCDETECTIVEERROR       ,
     CALCREFERENCE       ,
diff --git a/officecfg/registry/data/org/openoffice/Office/UI.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI.xcu
index 4e0e4c030b2c..ed31bbbdd653 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI.xcu
@@ -303,6 +303,14 @@
             <value xsi:nil="true"/>
           </prop>
         </node>
+        <node oor:name="CalcHiddenColRow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Color">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
         <node oor:name="CalcDetective">
           <prop oor:name="Color">
             <value xsi:nil="true"/>
@@ -588,6 +596,14 @@
             <value xsi:nil="true"/>
           </prop>
         </node>
+        <node oor:name="CalcHiddenColRow">
+          <prop oor:name="IsVisible">
+            <value>true</value>
+          </prop>
+          <prop oor:name="Color">
+            <value xsi:nil="true"/>
+          </prop>
+        </node>
         <node oor:name="CalcDetective">
           <prop oor:name="Color">
             <value>3494505</value>
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI.xcs 
b/officecfg/registry/schema/org/openoffice/Office/UI.xcs
index 64c0188ada5b..aa4fdcec54a0 100644
--- a/officecfg/registry/schema/org/openoffice/Office/UI.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/UI.xcs
@@ -370,6 +370,22 @@
           </info>
         </prop>
       </group>
+      <group oor:name="CalcHiddenColRow">
+        <info>
+          <desc>Specifies the settings used for hidden rows/cols in 
Calc.</desc>
+        </info>
+        <prop oor:name="IsVisible" oor:type="xs:boolean" oor:nillable="false">
+          <info>
+            <desc>Specifies the visibility of hidden row/col indicator (true = 
visible).</desc>
+          </info>
+          <value>true</value>
+        </prop>
+        <prop oor:name="Color" oor:type="xs:int">
+          <info>
+            <desc>Specifies the color used for hidden rows/cols.</desc>
+          </info>
+        </prop>
+      </group>
       <group oor:name="CalcDetective">
         <info>
           <desc>Specifies the settings used for audition arrows in Calc.</desc>
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 183705db2326..e1ab39eb2446 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -274,6 +274,7 @@ class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::Window, 
public DropTargetHel
     void            DrawAfterScroll();
     tools::Rectangle       GetListValButtonRect( const ScAddress& rButtonPos );
 
+    void            DrawHiddenIndicator( SCCOL nX1, SCROW nY1, SCCOL nX2, 
SCROW nY2, vcl::RenderContext& rRenderContext);
     void            DrawPagePreview( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW 
nY2, vcl::RenderContext& rRenderContext);
 
     bool            GetEditUrl( const Point& rPos,
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 8c9e4e01507c..1dc1bab5e5f7 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -43,6 +43,8 @@
 #include <svx/sdr/contact/viewobjectcontact.hxx>
 #include <svx/sdr/contact/viewcontact.hxx>
 #include <tabvwsh.hxx>
+#include <vcl/lineinfo.hxx>
+#include <vcl/sysdata.hxx>
 
 #include <gridwin.hxx>
 #include <viewdata.hxx>
@@ -851,6 +853,9 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const 
ScTableInfo& rTableI
 
     pContentDev->SetMapMode(MapMode(MapUnit::MapPixel));
 
+    //tdf#128258 - draw a dotted line before hidden columns/rows
+    DrawHiddenIndicator(nX1,nY1,nX2,nY2, *pContentDev);
+
     if ( bPageMode )
     {
         // DrawPagePreview draws complete lines/page numbers, must always be 
clipped
@@ -1691,6 +1696,39 @@ void ScGridWindow::CheckNeedsRepaint()
     rBindings.Invalidate( SID_TABLE_CELL );
 }
 
+void ScGridWindow::DrawHiddenIndicator( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW 
nY2, vcl::RenderContext& rRenderContext)
+{
+    ScDocument& rDoc = mrViewData.GetDocument();
+    SCTAB nTab = mrViewData.GetTabNo();
+    const svtools::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig();
+    const svtools::ColorConfigValue aColorValue = 
rColorCfg.GetColorValue(svtools::CALCHIDDENROWCOL);
+    if (aColorValue.bIsVisible) {
+        rRenderContext.SetLineColor(aColorValue.nColor);
+        LineInfo aLineInfo(LineStyle::Dash, 2);
+        aLineInfo.SetDashCount(0);
+        aLineInfo.SetDotCount(1);
+        aLineInfo.SetDistance(15);
+        //round caps except when running VCL_PLUGIN=gen
+        if (mrViewData.GetActiveWin()->GetSystemData()->toolkit != 
SystemEnvData::Toolkit::Gen)
+            aLineInfo.SetLineCap(css::drawing::LineCap_ROUND);
+        aLineInfo.SetDotLen(1);
+        for (int i=nX1; i<nX2; i++) {
+            if (rDoc.ColHidden(i,nTab) && (i<MAXCOL ? 
!rDoc.ColHidden(i+1,nTab) : true)) {
+                Point aStart = mrViewData.GetScrPos(i, nY1, eWhich, true );
+                Point aEnd = mrViewData.GetScrPos(i, nY2, eWhich, true );
+                rRenderContext.DrawLine(aStart,aEnd,aLineInfo);
+            }
+        }
+        for (int i=nY1; i<nY2; i++) {
+            if (rDoc.RowHidden(i,nTab) && (i<MAXROW ? 
!rDoc.RowHidden(i+1,nTab) : true)) {
+                Point aStart = mrViewData.GetScrPos(nX1, i, eWhich, true );
+                Point aEnd = mrViewData.GetScrPos(nX2, i, eWhich, true );
+                rRenderContext.DrawLine(aStart,aEnd,aLineInfo);
+            }
+        }
+    } //visible
+}
+
 void ScGridWindow::DrawPagePreview( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW 
nY2, vcl::RenderContext& rRenderContext)
 {
     ScPageBreakData* pPageData = mrViewData.GetView()->GetPageBreakData();
diff --git a/svtools/source/config/colorcfg.cxx 
b/svtools/source/config/colorcfg.cxx
index 3bbd37f6c9ce..79279b97d45d 100644
--- a/svtools/source/config/colorcfg.cxx
+++ b/svtools/source/config/colorcfg.cxx
@@ -139,6 +139,7 @@ uno::Sequence< OUString> GetPropertyNames(const OUString& 
rScheme)
         { std::u16string_view(u"/CalcPageBreak"), false },
         { std::u16string_view(u"/CalcPageBreakManual"), false },
         { std::u16string_view(u"/CalcPageBreakAutomatic"), false },
+        { std::u16string_view(u"/CalcHiddenColRow"), true },
         { std::u16string_view(u"/CalcDetective")   ,false },
         { std::u16string_view(u"/CalcDetectiveError")   ,false },
         { std::u16string_view(u"/CalcReference")   ,false },
@@ -433,6 +434,7 @@ Color ColorConfig::GetDefaultColor(ColorConfigEntry eEntry)
         COL_BLUE, //CALCPAGEBREAK
         Color(0x2300dc), //CALCPAGEBREAKMANUAL
         COL_GRAY7, //CALCPAGEBREAKAUTOMATIC
+        Color(0x2300dc), //CALCHIDDENCOLROW
         COL_LIGHTBLUE, // CALCDETECTIVE
         COL_LIGHTRED, // CALCDETECTIVEERROR
         Color(0xef0fff), // CALCREFERENCE

Reply via email to