Kaydet (Commit) 4ce66db6 authored tarafından Caolán McNamara's avatar Caolán McNamara

gtk3: SpinButtons button area isn't always part of the ControlRegion

Change-Id: Id0b5b787c1aaae2401c85a4737a8f33ac7b74679
üst 4bf6f558
......@@ -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,
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment