From e84f75d538772ecb297fe07d241d78894a98bd49 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 16 Feb 2016 12:27:29 +0000 Subject: 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 Tested-by: Michael Meeks --- vcl/inc/unx/gtk/gtkgdi.hxx | 2 +- vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 35 +++++++++++++------------------ 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(&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); -- cgit v1.2.3