layout: add a comment for gtk_style_context_set_background()
authorCosimo Cecchi <cosimoc@gnome.org>
Wed, 1 Jul 2015 21:32:12 +0000 (14:32 -0700)
committerCosimo Cecchi <cosimoc@gnome.org>
Wed, 1 Jul 2015 23:09:23 +0000 (16:09 -0700)
And wrap it with G_GNUC_IGNORE_DEPRECATIONS.
Unfortunately we can't stop rendering the background altogether here.
Also, refactor some common code in a single function.

gtk/gtklayout.c

index dd8f68ed10248804045d534790caa6d38f075647..26b74f29812c54033991f03bebefe877f871062c 100644 (file)
@@ -858,6 +858,25 @@ gtk_layout_init (GtkLayout *layout)
 
 /* Widget methods
  */
+static void
+set_background (GtkWidget *widget)
+{
+  GtkLayoutPrivate *priv;
+
+  if (gtk_widget_get_realized (widget))
+    {
+      priv = GTK_LAYOUT (widget)->priv;
+
+      /* We still need to call gtk_style_context_set_background() here for
+       * GtkLayout, since subclasses like EelCanvas depend on a background to
+       * be set since the beginning of the draw() implementation.
+       * This should be revisited next time we have a major API break.
+       */
+      G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
+      gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window);
+      G_GNUC_END_IGNORE_DEPRECATIONS;
+    }
+}
 
 static void 
 gtk_layout_realize (GtkWidget *widget)
@@ -903,7 +922,7 @@ gtk_layout_realize (GtkWidget *widget)
   priv->bin_window = gdk_window_new (window,
                                      &attributes, attributes_mask);
   gtk_widget_register_window (widget, priv->bin_window);
-  gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window);
+  set_background (widget);
 
   tmp_list = priv->children;
   while (tmp_list)
@@ -918,15 +937,9 @@ gtk_layout_realize (GtkWidget *widget)
 static void
 gtk_layout_style_updated (GtkWidget *widget)
 {
-  GtkLayoutPrivate *priv;
-
   GTK_WIDGET_CLASS (gtk_layout_parent_class)->style_updated (widget);
 
-  if (gtk_widget_get_realized (widget))
-    {
-      priv = GTK_LAYOUT (widget)->priv;
-      gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window);
-    }
+  set_background (widget);
 }
 
 static void