[Libreoffice-commits] core.git: vcl/source

Jan-Marek Glogowski (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 29 13:25:16 UTC 2020


 vcl/source/window/toolbox.cxx |   18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

New commits:
commit 8565546ce6a04f6f243f4f60d2693b148dca5a77
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Mon Jun 29 07:01:26 2020 +0200
Commit:     Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Mon Jun 29 15:24:27 2020 +0200

    tdf#134054 toolbox: respect drop-down arrow rect
    
    When centering the text and icon on the button, the code didn't
    take the drop-down arrow rect width into account, resulting in an
    overlapped arrow. This is especially visible, if the drop-down
    is shown and the button is wrongly highlighted.
    
    There is supposed to be some vertical mode, which I couldn't find
    in the GUI, so this just adapts the width in horizontal mode.
    
    Change-Id: I194780dc32db610041ad0ee45a425e1026c7c4e3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97358
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glogow at fbihome.de>

diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 8ddb536f7bb4..543e1b507c50 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -2642,13 +2642,11 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si
     long    nBtnWidth = aBtnSize.Width()-SMALLBUTTON_HSIZE;
     long    nBtnHeight = aBtnSize.Height()-SMALLBUTTON_VSIZE;
     Size    aImageSize;
-    Size    aTxtSize;
 
-    if ( bText )
-    {
-        aTxtSize.setWidth( GetCtrlTextWidth( pItem->maText ) );
-        aTxtSize.setHeight( GetTextHeight() );
-    }
+    const bool bDropDown = (pItem->mnBits & ToolBoxItemBits::DROPDOWN) == ToolBoxItemBits::DROPDOWN;
+    tools::Rectangle aDropDownRect;
+    if (bDropDown)
+        aDropDownRect = pItem->GetDropDownRect(mbHorz);
 
     if ( bImage )
     {
@@ -2678,7 +2676,7 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si
         }
         else
         {
-            nImageOffX += (nBtnWidth-aImageSize.Width())/2;
+            nImageOffX += (nBtnWidth-(bDropDown ? aDropDownRect.getWidth() : 0)+SMALLBUTTON_OFF_NORMAL_X-aImageSize.Width())/2;
             if ( meTextPosition == ToolBoxTextPosition::Right )
                 nImageOffY += (nBtnHeight-aImageSize.Height())/2;
         }
@@ -2703,6 +2701,7 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si
     bool bRotate = false;
     if ( bText )
     {
+        const Size aTxtSize(GetCtrlTextWidth(pItem->maText), GetTextHeight());
         long nTextOffX = nOffX;
         long nTextOffY = nOffY;
 
@@ -2740,7 +2739,7 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si
             else
             {
                 // center horizontally
-                nTextOffX += (nBtnWidth-aTxtSize.Width() - TB_IMAGETEXTOFFSET)/2;
+                nTextOffX += (nBtnWidth-(bDropDown ? aDropDownRect.getWidth() : 0)+SMALLBUTTON_OFF_NORMAL_X-aTxtSize.Width() - TB_IMAGETEXTOFFSET)/2;
                 // set vertical position
                 nTextOffY += nBtnHeight - aTxtSize.Height();
             }
@@ -2766,9 +2765,8 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si
     }
 
     // paint optional drop down arrow
-    if ( pItem->mnBits & ToolBoxItemBits::DROPDOWN )
+    if (bDropDown)
     {
-        tools::Rectangle aDropDownRect( pItem->GetDropDownRect( mbHorz ) );
         bool bSetColor = true;
         if ( !pItem->mbEnabled || !IsEnabled() )
         {


More information about the Libreoffice-commits mailing list