]> Pileus Git - ~andy/gtk/commitdiff
toolbar: don't call gtk_style_context_set_background()
authorCosimo Cecchi <cosimoc@gnome.org>
Wed, 13 Jun 2012 23:38:42 +0000 (19:38 -0400)
committerCosimo Cecchi <cosimoc@gnome.org>
Thu, 14 Jun 2012 00:10:41 +0000 (20:10 -0400)
GtkToolbar doesn't have its own GdkWindow to draw on (it calls
gtk_widget_set_has_window(FALSE) in _init), but only an event window
(input-only).
Since gtk_widget_get_window() in that case will return the GdkWindow of
the parent container, by calling gtk_style_context_set_background() here
we're overriding the base background of the container instead of our.
While in most cases this doesn't have any noticeable effect, since
the toplevel GtkWindow will paint its background on top of it at the
beginning of the draw cycle, when the classic window hierarchy is
broken, such as when widgets are rendered through a clutter-gtk
offscreen embedding, the background will become visible, which is
undesirable.
Fix this by having GtkToolbar not call gtk_style_context_set_background
in its style_updated handler.

gtk/gtktoolbar.c

index 5dfa206bdc9cb299fa02cdb9d1bacbc1062ab470..3a389bd9771f00f126894a9951c37867917c7f10 100644 (file)
@@ -1879,11 +1879,6 @@ gtk_toolbar_style_updated (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_toolbar_parent_class)->style_updated (widget);
 
   priv->max_homogeneous_pixels = -1;
-
-  if (gtk_widget_get_realized (widget))
-    gtk_style_context_set_background (gtk_widget_get_style_context (widget),
-                                      gtk_widget_get_window (widget));
-
   gtk_toolbar_update_button_relief (GTK_TOOLBAR (widget));
 }