Package: glade / 3.20.0-2+deb9u1

fix-use-of-gtk-style-context-in-GladeDesignLayout.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Description: 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 0c076cc8828cd80f1f156a08569199675bf35165 for reference.
Author: Arnaud Rebillout <arnaud@preev.io>
Origin: https://git.gnome.org/browse/glade/commit/?id=ac55fa78566145ac44d48ba88ec1351db5b4a99d
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=763624
Bug-Debian: https://bugs.debian.org/859324
Reviewed-By: S├ębastien Villemot <sebastien@debian.org>
Last-Updated: 2018-02-09
--- a/gladeui/glade-design-layout.c
+++ b/gladeui/glade-design-layout.c
@@ -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,
                          priv->widget_name);
-      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);
 }
 
 #define DIMENSION_OFFSET 9
-- 
cgit v0.12