officecfg/registry/schema/org/openoffice/Office/Calc.xcs |    8 ++++
 sc/source/ui/view/output.cxx                             |   26 ++++++---------
 2 files changed, 20 insertions(+), 14 deletions(-)

New commits:
commit bddae0d0dc4f64757100e00432ca40a6470d2c31
Author:     Heiko Tietze <tietze.he...@gmail.com>
AuthorDate: Tue Jan 16 13:11:06 2024 +0100
Commit:     Heiko Tietze <heiko.tie...@documentfoundation.org>
CommitDate: Wed Jan 17 08:50:24 2024 +0100

    Resolves tdf#158958 and tdf#159124 - Improvements to Comments indicator
    
    * Option to control the indicator size added
    * Border color adopts the grid color
    * Indicator moved to the very edge of the cell
    * Default dynamic size reduced
    
    Change-Id: Ia298edfa30061910344a1afa42b42840b9cdab77
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162175
    Tested-by: Jenkins
    Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org>

diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs 
b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
index d54b092eca66..de97c822c7c1 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
@@ -105,6 +105,14 @@
           </info>
           <value>true</value>
         </prop>
+        <prop oor:name="NoteIndicator" oor:type="xs:int" oor:nillable="false">
+          <!-- no UI -->
+          <info>
+            <desc>If less than 1, the size of comment indicator is calculated 
dynamically; otherwise this value will be used.</desc>
+            <label>Comment indicator size</label>
+          </info>
+          <value>0</value>
+        </prop>
         <prop oor:name="FormulaMark" oor:type="xs:boolean" 
oor:nillable="false">
           <!-- UIHints: Tools - Options -Spreadsheets - Contents - [Section] 
Display -->
           <info>
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index 58b6db5107d3..e650c6faf774 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -31,6 +31,7 @@
 #include <drawinglayer/processor2d/baseprocessor2d.hxx>
 #include <drawinglayer/processor2d/processor2dtools.hxx>
 #include <officecfg/Office/Common.hxx>
+#include <officecfg/Office/Calc.hxx>
 #include <vcl/lineinfo.hxx>
 #include <vcl/gradient.hxx>
 #include <vcl/settings.hxx>
@@ -2467,7 +2468,7 @@ void ScOutputData::DrawNoteMarks(vcl::RenderContext& 
rRenderContext)
         nInitPosX += nMirrorW - 1;              // always in pixels
     tools::Long nLayoutSign = bLayoutRTL ? -1 : 1;
 
-    tools::Long nPosY = nScrY;
+    tools::Long nPosY = nScrY - 1;
     for (SCSIZE nArrY=1; nArrY+1<nArrCount; nArrY++)
     {
         RowInfo* pThisRowInfo = &pRowInfo[nArrY];
@@ -2492,13 +2493,7 @@ void ScOutputData::DrawNoteMarks(vcl::RenderContext& 
rRenderContext)
                 if (!mpDoc->ColHidden(nX, nTab) && mpDoc->GetNote(nX, 
pRowInfo[nArrY].nRowNo, nTab)
                     && (bIsMerged || (!pInfo->bHOverlapped && 
!pInfo->bVOverlapped)))
                 {
-
-                    const bool bIsDarkBackground = 
SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor.IsDark();
-                    const Color aColor(static_cast<const 
SvxBrushItem*>(pInfo->maBackground.getItem())->GetColor());
-                    if ( aColor == COL_AUTO ? bIsDarkBackground : 
aColor.IsDark() )
-                        rRenderContext.SetLineColor(COL_WHITE);
-                    else
-                        rRenderContext.SetLineColor(COL_BLACK);
+                    
rRenderContext.SetLineColor(SC_MOD()->GetColorConfig().GetColorValue(svtools::CALCGRID).nColor);
 
                     const StyleSettings& rStyleSettings = 
Application::GetSettings().GetStyleSettings();
                     if ( mbUseStyleColor && 
rStyleSettings.GetHighContrastMode() )
@@ -2506,7 +2501,7 @@ void ScOutputData::DrawNoteMarks(vcl::RenderContext& 
rRenderContext)
                     else
                         rRenderContext.SetFillColor( 
SC_MOD()->GetColorConfig().GetColorValue(svtools::CALCCOMMENTS).nColor );
 
-                    tools::Long nMarkX = nPosX + ( 
pRowInfo[0].basicCellInfo(nX).nWidth - 2 ) * nLayoutSign;
+                    tools::Long nMarkX = nPosX + ( 
pRowInfo[0].basicCellInfo(nX).nWidth - 1) * nLayoutSign;
                     if ( bIsMerged || pInfo->bMerged )
                     {
                         //  if merged, add widths of all cells
@@ -2517,11 +2512,14 @@ void ScOutputData::DrawNoteMarks(vcl::RenderContext& 
rRenderContext)
                             ++nNextX;
                         }
                     }
-                    // DPI/ZOOM 100/100 => 10, 100/50 => 7, 100/150 => 13
-                    // DPI/ZOOM 150/100 => 13, 150/50 => 8.5, 150/150 => 17.5
-                    const double fSize(rRenderContext.GetDPIScaleFactor() * 
aZoomX * 6 + 4);
-                    // Make sure we have an integer size to draw a proper 
triangle
-                    sal_Int16 nSize = static_cast<sal_Int16>(fSize);
+                    // DPI/ZOOM 100/100 => 6, 100/50 => 4.5, 100/150 => 7.5
+                    // DPI/ZOOM 150/100 => 7.5, 150/50 => 6, 150/150 => 9
+                    sal_Int16 nSize = 
officecfg::Office::Calc::Content::Display::NoteIndicator::get();
+                    if (nSize < 1)
+                    {
+                       const double fSize(rRenderContext.GetDPIScaleFactor() * 
aZoomX * 3 + 3);
+                       nSize = static_cast<sal_Int16>(fSize);
+                    }
                     Point aPoints[3];
                     aPoints[0] = Point(nMarkX, nPosY);
                     aPoints[0].setX( bLayoutRTL ? aPoints[0].X() + nSize : 
aPoints[0].X() - nSize );

Reply via email to