]> Pileus Git - ~andy/gtk/commitdiff
Destroy the legacy style with the screen
authorWilliam Jon McCann <jmccann@redhat.com>
Wed, 12 Sep 2012 21:29:58 +0000 (17:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 17 Sep 2012 01:36:18 +0000 (21:36 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=683896

gtk/deprecated/gtkstyle.c

index c981aaa8dd7e20cac94f5950ad3c12863bfafef3..12a88264129cd265f747b60e5f32cf336dfa341c 100644 (file)
@@ -4015,7 +4015,23 @@ gtk_paint_spinner (GtkStyle           *style,
   cairo_restore (cr);
 }
 
-static GtkStyle        *gtk_default_style = NULL;
+static GtkStyle *
+gtk_widget_get_default_style_for_screen (GdkScreen *screen)
+{
+  GtkStyle *default_style;
+
+  default_style = g_object_get_data (G_OBJECT (screen), "gtk-legacy-default-style");
+  if (default_style == NULL)
+    {
+      default_style = gtk_style_new ();
+      g_object_set_data_full (G_OBJECT (screen),
+                              I_("gtk-legacy-default-style"),
+                              default_style,
+                              g_object_unref);
+    }
+
+  return default_style;
+}
 
 /**
  * gtk_widget_get_default_style:
@@ -4032,13 +4048,12 @@ static GtkStyle        *gtk_default_style = NULL;
 GtkStyle*
 gtk_widget_get_default_style (void)
 {
-  if (!gtk_default_style)
-    {
-      gtk_default_style = gtk_style_new ();
-      g_object_ref (gtk_default_style);
-    }
+  GdkScreen *screen = gdk_screen_get_default ();
 
-  return gtk_default_style;
+  if (screen)
+    return gtk_widget_get_default_style_for_screen (screen);
+  else
+    return NULL;
 }
 
 /**