summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Tietze <tietze.heiko@gmail.com>2022-01-18 12:20:57 +0100
committerHeiko Tietze <heiko.tietze@documentfoundation.org>2022-01-27 10:31:52 +0100
commitba0100be03c6bbc5ae10201bae340b3f7b7c4500 (patch)
tree84209c09485985c7a2639ad734a6ab099e256941
parent2f4f4cbeb8e50081d607b86b0475b93971c40ab8 (diff)
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.tietze@documentfoundation.org>
-rw-r--r--cui/source/options/optcolor.cxx1
-rw-r--r--cui/uiconfig/ui/colorconfigwin.ui77
-rw-r--r--include/svtools/colorcfg.hxx1
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI.xcu16
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/UI.xcs16
-rw-r--r--sc/source/ui/inc/gridwin.hxx1
-rw-r--r--sc/source/ui/view/gridwin4.cxx38
-rw-r--r--svtools/source/config/colorcfg.cxx2
8 files changed, 135 insertions, 17 deletions
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