Commit 1734289c authored by Arnaud Rebillout's avatar Arnaud Rebillout Committed by Tristan Van Berkom
Browse files

Fix use of GTK+ style context in GladeDesignLayout.

It seems like modifying the style context in the 'draw' handler is not
recommended, and we need to save/restore the context.

Otherwise, for some widgets (GtkButton, GtkComboBox), the
GladeDesignLayout gets trapped in draw-damage loop.

See 0c076cc8 for reference.
parent 59c3785e
......@@ -1033,13 +1033,13 @@ draw_frame (GtkWidget *widget, cairo_t *cr, gboolean selected,
if (priv->widget_name)
GdkRectangle *rect = &priv->south_east;
gtk_style_context_save (context);
gtk_style_context_add_class (context, "handle");
gtk_render_background (context, cr, rect->x, rect->y, rect->width, rect->height);
gtk_render_frame (context, cr, rect->x, rect->y, rect->width, rect->height);
gtk_render_layout (context, cr, rect->x + OUTLINE_WIDTH, rect->y + OUTLINE_WIDTH,
gtk_style_context_remove_class (context, "handle");
gtk_style_context_restore (context);
......@@ -1084,6 +1084,7 @@ draw_selection (cairo_t *cr,
if (alloc.x < 0 || alloc.y < 0) return;
context = gtk_widget_get_style_context (parent);
gtk_style_context_save (context);
gtk_style_context_add_class (context, "selection");
r = color->red; g = color->green; b = color->blue;
gtk_widget_translate_coordinates (widget, parent, 0, 0, &x, &y);
......@@ -1122,7 +1123,7 @@ draw_selection (cairo_t *cr,
/* Draw Selection box */
gtk_render_frame (context, cr, x - left, y - top, w + left + right, h + top + bottom);
gtk_style_context_remove_class (context, "selection");
gtk_style_context_restore (context);
Supports Markdown
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