BigToolBox painting fix

If the button was dropdown only type the arrow
was on the same position as a text.

Change-Id: I3d9693ef57c5c2d27549987339a1c388bc3ff724
Reviewed-on: https://gerrit.libreoffice.org/28721
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
diff --git a/sw/uiconfig/swriter/ui/notebookbar.ui b/sw/uiconfig/swriter/ui/notebookbar.ui
index c92ee28..c2b7b55 100644
--- a/sw/uiconfig/swriter/ui/notebookbar.ui
+++ b/sw/uiconfig/swriter/ui/notebookbar.ui
@@ -199,11 +199,6 @@
    <property name="can_focus">False</property>
    <property name="pixbuf">cmd/lc_zoomoptimal.png</property>
  </object>
  <object class="GtkImage" id="inserttableimg">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="pixbuf">cmd/lc_inserttable.png</property>
  </object>
  <object class="GtkGrid" id="NotebookBar">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
@@ -1885,15 +1880,25 @@
                  </packing>
                </child>
                <child>
                  <object class="vcllo-SmallButton" id="inserttable">
                  <object class="sfxlo-BigToolBox" id="tablebox">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="action_name">.uno:InsertTable</property>
                    <property name="image">inserttableimg</property>
                    <property name="relief">none</property>
                    <property name="image_position">top</property>
                    <property name="always_show_image">True</property>
                    <property name="can_focus">False</property>
                    <property name="valign">center</property>
                    <property name="show_arrow">False</property>
                    <child>
                      <object class="GtkMenuToolButton" id="InsertTable">
                        <property name="use_action_appearance">False</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="is_important">True</property>
                        <property name="action_name">.uno:InsertTable</property>
                        <property name="use_underline">True</property>
                      </object>
                      <packing>
                        <property name="expand">False</property>
                        <property name="homogeneous">True</property>
                      </packing>
                    </child>
                  </object>
                  <packing>
                    <property name="expand">False</property>
@@ -1910,7 +1915,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">3</property>
                    <property name="position">4</property>
                  </packing>
                </child>
                <child>
@@ -1927,7 +1932,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">4</property>
                    <property name="position">5</property>
                  </packing>
                </child>
                <child>
@@ -1960,7 +1965,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">5</property>
                    <property name="position">6</property>
                  </packing>
                </child>
                <child>
@@ -1977,7 +1982,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">6</property>
                    <property name="position">7</property>
                  </packing>
                </child>
                <child>
@@ -2009,7 +2014,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">7</property>
                    <property name="position">8</property>
                  </packing>
                </child>
                <child>
@@ -2068,7 +2073,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">8</property>
                    <property name="position">9</property>
                  </packing>
                </child>
                <child>
@@ -2351,7 +2356,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">9</property>
                    <property name="position">10</property>
                  </packing>
                </child>
                <child>
@@ -2363,7 +2368,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">10</property>
                    <property name="position">11</property>
                  </packing>
                </child>
                <child>
@@ -2426,7 +2431,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">11</property>
                    <property name="position">12</property>
                  </packing>
                </child>
                <child>
@@ -2542,7 +2547,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">13</property>
                    <property name="position">14</property>
                  </packing>
                </child>
                <child>
@@ -2625,7 +2630,7 @@
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">16</property>
                    <property name="position">17</property>
                  </packing>
                </child>
              </object>
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 5ca7454..e9e539a 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -3047,14 +3047,17 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, sal_uInt16 nPos, 
    if( ImplGetSVData()->maNWFData.mbToolboxDropDownSeparate )
    {
        // separate button not for dropdown only where the whole button is painted
        if ( pItem->mnBits & ToolBoxItemBits::DROPDOWN &&
        // exception: when text position is set to bottom then we want to calculate rect for dropdown only button
        if ( ( pItem->mnBits & ToolBoxItemBits::DROPDOWN &&
            ((pItem->mnBits & ToolBoxItemBits::DROPDOWNONLY) != ToolBoxItemBits::DROPDOWNONLY) )
            || ( ( pItem->mnBits & ToolBoxItemBits::DROPDOWN) && ( meTextPosition == ToolBoxTextPosition::Bottom ) ) )
        {
            Rectangle aArrowRect = pItem->GetDropDownRect( mbHorz && ( meTextPosition == ToolBoxTextPosition::Right ) );
            if( aArrowRect.Top() == pItem->maRect.Top() ) // dropdown arrow on right side
                aBtnSize.Width() -= aArrowRect.GetWidth();
            else // dropdown arrow on bottom side
                aBtnSize.Height() -= aArrowRect.GetHeight();
            else if ( !( (meTextPosition == ToolBoxTextPosition::Bottom)
                        && ((pItem->mnBits & ToolBoxItemBits::DROPDOWNONLY) == ToolBoxItemBits::DROPDOWNONLY) ) )
                aBtnSize.Height() -= aArrowRect.GetHeight(); // dropdown arrow on bottom side
        }
    }

@@ -3266,7 +3269,10 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, sal_uInt16 nPos, 
                long nArrowHeight = ( pItem->mnBits & ToolBoxItemBits::DROPDOWN )
                                        ? TB_DROPDOWNARROWWIDTH : 0;

                if ( ImplGetSVData()->maNWFData.mbToolboxDropDownSeparate )
                // only if buton is a "dropdown only" type then is painted as a single button
                // and we need to move text above the arrow
                if ( ImplGetSVData()->maNWFData.mbToolboxDropDownSeparate
                    && (pItem->mnBits & ToolBoxItemBits::DROPDOWNONLY) != ToolBoxItemBits::DROPDOWNONLY )
                    nArrowHeight = 0;

                nTextOffY += nBtnHeight - aTxtSize.Height() - nArrowHeight;