]> Pileus Git - ~andy/gtk/blobdiff - gtk/deprecated/gtkstyle.c
filechooser: Rename _gtk_file_is_path_not_local() to _gtk_file_has_native_path()
[~andy/gtk] / gtk / deprecated / gtkstyle.c
index c981aaa8dd7e20cac94f5950ad3c12863bfafef3..c7ea8159eaca6148b07c64650afae0388e5aca32 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:
@@ -4029,16 +4045,23 @@ static GtkStyle        *gtk_default_style = NULL;
  *     gtk_css_provider_get_default() to obtain a #GtkStyleProvider
  *     with the default widget style information.
  */
-GtkStyle*
+GtkStyle *
 gtk_widget_get_default_style (void)
 {
-  if (!gtk_default_style)
+  static GtkStyle *default_style = NULL;
+  GtkStyle *style = NULL;
+  GdkScreen *screen = gdk_screen_get_default ();
+
+  if (screen)
+    style = gtk_widget_get_default_style_for_screen (screen);
+  else
     {
-      gtk_default_style = gtk_style_new ();
-      g_object_ref (gtk_default_style);
+      if (default_style == NULL)
+        default_style = gtk_style_new ();
+      style = default_style;
     }
 
-  return gtk_default_style;
+  return style;
 }
 
 /**