summaryrefslogtreecommitdiff
path: root/gtk/gtkcheckbutton.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-12-19 23:23:09 -0500
committerMatthias Clasen <mclasen@redhat.com>2015-12-19 23:23:09 -0500
commitc0683d9267cb676df3777f9b27a9a89494e319d0 (patch)
tree2cef403d213fd9920f0e5b80ff3b969edc82d002 /gtk/gtkcheckbutton.c
parentf7236b261b9d74b311888954349534face432b1c (diff)
downloadgtk+-c0683d9267cb676df3777f9b27a9a89494e319d0.tar.gz
checkbutton: Fix regression from builtin icon
The leaking of cairo transforms from builtin icon drawing was causing the label to be drawn at the wrong position.
Diffstat (limited to 'gtk/gtkcheckbutton.c')
-rw-r--r--gtk/gtkcheckbutton.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/gtk/gtkcheckbutton.c b/gtk/gtkcheckbutton.c
index 0dec2ad16c..52eaabcfee 100644
--- a/gtk/gtkcheckbutton.c
+++ b/gtk/gtkcheckbutton.c
@@ -665,8 +665,7 @@ gtk_check_button_allocate (GtkCssGadget *gadget,
GtkButton *button;
GtkAllocation child_allocation;
GtkWidget *child;
- gint check_min_width, check_nat_width;
- gint check_min_height, check_nat_height;
+ gint check_width, check_height;
GdkRectangle check_clip;
widget = gtk_css_gadget_get_owner (gadget);
@@ -676,22 +675,15 @@ gtk_check_button_allocate (GtkCssGadget *gadget,
g_assert (gtk_toggle_button_get_mode (GTK_TOGGLE_BUTTON (widget)));
- gtk_widget_set_allocation (widget, allocation);
-
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (gtk_button_get_event_window (button),
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
gtk_css_gadget_get_preferred_size (priv->indicator_gadget,
GTK_ORIENTATION_HORIZONTAL,
-1,
- &check_min_width, &check_nat_width,
+ NULL, &check_width,
NULL, NULL);
gtk_css_gadget_get_preferred_size (priv->indicator_gadget,
GTK_ORIENTATION_VERTICAL,
-1,
- &check_min_height, &check_nat_height,
+ NULL, &check_height,
NULL, NULL);
child = gtk_bin_get_child (GTK_BIN (button));
@@ -699,10 +691,10 @@ gtk_check_button_allocate (GtkCssGadget *gadget,
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
child_allocation.x = allocation->x;
else
- child_allocation.x = allocation->x + allocation->width - check_nat_width;
- child_allocation.y = allocation->y + (allocation->height - check_nat_height) / 2;
- child_allocation.width = check_nat_width;
- child_allocation.height = check_nat_height;
+ child_allocation.x = allocation->x + allocation->width - check_width;
+ child_allocation.y = allocation->y + (allocation->height - check_height) / 2;
+ child_allocation.width = check_width;
+ child_allocation.height = check_height;
gtk_css_gadget_allocate (priv->indicator_gadget,
&child_allocation,
@@ -712,11 +704,11 @@ gtk_check_button_allocate (GtkCssGadget *gadget,
if (child && gtk_widget_get_visible (child))
{
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
- child_allocation.x = allocation->x + check_nat_width;
+ child_allocation.x = allocation->x + check_width;
else
child_allocation.x = allocation->x;
child_allocation.y = allocation->y;
- child_allocation.width = allocation->width - check_nat_width;
+ child_allocation.width = allocation->width - check_width;
child_allocation.height = allocation->height;
gtk_widget_size_allocate_with_baseline (child, &child_allocation, baseline);
@@ -762,7 +754,11 @@ gtk_check_button_draw_indicator (GtkCheckButton *check_button,
if (class->draw_indicator)
class->draw_indicator (check_button, cr);
else
- gtk_css_gadget_draw (priv->indicator_gadget, cr);
+ {
+ cairo_save (cr);
+ gtk_css_gadget_draw (priv->indicator_gadget, cr);
+ cairo_restore (cr);
+ }
}
GtkCssNode *