diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-01-15 12:06:06 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-01-18 11:34:09 +0000 |
commit | 4ce66db6ac8a18c34011fa0bd3198752a0867d24 (patch) | |
tree | 1b574189a6aa30589c4c253ed3ff02b691762597 | |
parent | 4bf6f5581c9938504b841eb94f6121068b2eb752 (diff) |
gtk3: SpinButtons button area isn't always part of the ControlRegion
Change-Id: Id0b5b787c1aaae2401c85a4737a8f33ac7b74679
-rw-r--r-- | vcl/inc/unx/gtk/gtkgdi.hxx | 2 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index e5593856f474..32e10b4a2002 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -104,7 +104,7 @@ private: ControlPart nPart, Rectangle aAreaRect, ControlState nState ); - void PaintSpinButton(GtkStyleContext *context, + Rectangle 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 65f3d7c6ad1a..69c8a778a3d9 100644 --- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx @@ -617,7 +617,7 @@ void GtkSalGraphics::PaintOneSpinButton( GtkStyleContext *context, gtk_style_context_restore(context); } -void GtkSalGraphics::PaintSpinButton(GtkStyleContext *context, +Rectangle GtkSalGraphics::PaintSpinButton(GtkStyleContext *context, cairo_t *cr, const Rectangle& rControlRectangle, ControlType nType, @@ -658,6 +658,8 @@ void GtkSalGraphics::PaintSpinButton(GtkStyleContext *context, PaintOneSpinButton(context, cr, nType, upBtnPart, areaRect, upBtnState ); PaintOneSpinButton(context, cr, nType, downBtnPart, areaRect, downBtnState ); + + return areaRect; } #define ARROW_SIZE 11 * 0.85 @@ -1077,6 +1079,8 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co clipRegion(cr); cairo_translate(cr, rControlRegion.Left(), rControlRegion.Top()); + Rectangle aDamageRect(rControlRegion); + long nX = 0; long nY = 0; long nWidth = rControlRegion.GetWidth(); @@ -1159,7 +1163,7 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co PaintScrollbar(context, cr, rControlRegion, nType, nPart, rValue); break; case RENDER_SPINBUTTON: - PaintSpinButton(context, cr, rControlRegion, nType, nPart, rValue); + aDamageRect.Union(PaintSpinButton(context, cr, rControlRegion, nType, nPart, rValue)); break; case RENDER_COMBOBOX: PaintCombobox(flags, cr, rControlRegion, nType, nPart, rValue); @@ -1215,7 +1219,9 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co gtk_style_context_restore(context); cairo_destroy(cr); // unref - mpFrame->damaged(rControlRegion.Left(), rControlRegion.Top(), rControlRegion.Right(), rControlRegion.Bottom()); + + if (!aDamageRect.IsEmpty()) + mpFrame->damaged(aDamageRect.Left(), aDamageRect.Top(), aDamageRect.Right(), aDamageRect.Bottom()); return true; } |