summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-02-16 12:27:29 +0000
committerMichael Meeks <michael.meeks@collabora.com>2016-02-16 13:14:32 +0000
commite84f75d538772ecb297fe07d241d78894a98bd49 (patch)
treec78513185f10eb65810e26201b4e3205485d560f
parent77aa8f92aab6a66ca2186efd2e4cbfc0d1c9f0e8 (diff)
Related: tdf#97739 fix gtk3 spinbuttons for recent control region changes
Change-Id: Ia745cbe808395c4c9ec6a3c72612814a4834bbcb (cherry picked from commit e6d255420a7fb00ed1050e0e96768eea57a92bc4) Reviewed-on: https://gerrit.libreoffice.org/22395 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r--vcl/inc/unx/gtk/gtkgdi.hxx2
-rw-r--r--vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx35
2 files changed, 15 insertions, 22 deletions
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 2bb602982598..d4ae5f06af3a 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -163,7 +163,7 @@ private:
ControlPart nPart,
Rectangle aAreaRect,
ControlState nState );
- Rectangle PaintSpinButton(GtkStyleContext *context,
+ void PaintSpinButton(GtkStyleContext *context,
cairo_t *cr,
const Rectangle& rControlRectangle,
ControlType nType,
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index 5205d137b55b..20efd8a598e6 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -610,14 +610,13 @@ void GtkSalGraphics::PaintOneSpinButton( GtkStyleContext *context,
gtk_icon_info_free(info);
}
-Rectangle GtkSalGraphics::PaintSpinButton(GtkStyleContext *context,
+void GtkSalGraphics::PaintSpinButton(GtkStyleContext *context,
cairo_t *cr,
const Rectangle& rControlRectangle,
ControlType nType,
- ControlPart /*nPart*/,
+ ControlPart nPart,
const ImplControlValue& rValue )
{
- Rectangle areaRect;
const SpinbuttonValue *pSpinVal = (rValue.getType() == CTRL_SPINBUTTONS) ? static_cast<const SpinbuttonValue *>(&rValue) : nullptr;
ControlPart upBtnPart = PART_BUTTON_UP;
ControlState upBtnState = ControlState::NONE;
@@ -633,26 +632,20 @@ Rectangle GtkSalGraphics::PaintSpinButton(GtkStyleContext *context,
downBtnState = pSpinVal->mnLowerState;
}
- areaRect = rControlRectangle;
-
- gtk_render_background(context, cr,
- 0, 0,
- areaRect.GetWidth(), areaRect.GetHeight() );
- gtk_render_frame(context, cr,
- 0, 0,
- areaRect.GetWidth(), areaRect.GetHeight() );
-
- // CTRL_SPINBUTTONS pass their area in pSpinVal, not in rControlRectangle
- if (pSpinVal)
+ if (nPart == PART_ENTIRE_CONTROL)
{
- areaRect = pSpinVal->maUpperRect;
- areaRect.Union( pSpinVal->maLowerRect );
+ gtk_render_background(context, cr,
+ 0, 0,
+ rControlRectangle.GetWidth(), rControlRectangle.GetHeight() );
+ gtk_render_frame(context, cr,
+ 0, 0,
+ rControlRectangle.GetWidth(), rControlRectangle.GetHeight() );
}
- PaintOneSpinButton(mpSpinUpStyle, cr, nType, upBtnPart, areaRect, upBtnState );
- PaintOneSpinButton(mpSpinDownStyle, cr, nType, downBtnPart, areaRect, downBtnState );
-
- return areaRect;
+ cairo_translate(cr, -rControlRectangle.Left(), -rControlRectangle.Top());
+ PaintOneSpinButton(mpSpinUpStyle, cr, nType, upBtnPart, rControlRectangle, upBtnState );
+ PaintOneSpinButton(mpSpinDownStyle, cr, nType, downBtnPart, rControlRectangle, downBtnState );
+ cairo_translate(cr, rControlRectangle.Left(), rControlRectangle.Top());
}
#define ARROW_SIZE 11 * 0.85
@@ -1481,7 +1474,7 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
PaintScrollbar(context, cr, rControlRegion, nType, nPart, rValue);
break;
case RENDER_SPINBUTTON:
- aDamageRect.Union(PaintSpinButton(context, cr, rControlRegion, nType, nPart, rValue));
+ PaintSpinButton(context, cr, rControlRegion, nType, nPart, rValue);
break;
case RENDER_COMBOBOX:
PaintCombobox(flags, cr, rControlRegion, nType, nPart, rValue);