]> Pileus Git - ~andy/gtk/commitdiff
Fix problems with setting symbolic colors from rc files. (#338345,
authorMatthias Clasen <mclasen@localhost.localdomain>
Sun, 30 Apr 2006 06:10:37 +0000 (06:10 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 30 Apr 2006 06:10:37 +0000 (06:10 +0000)
2006-04-30  Matthias Clasen  <mclasen@localhost.localdomain>

Fix problems with setting symbolic colors from rc files.
(#338345, Benjamin Berg)

* gtk/gtkrc.c (gtk_rc_settings_changed, gtk_rc_font_name_changed)
(gtk_rc_color_hash_changed, gtk_rc_reparse_all_for_settings): Don't
freeze notification for settings changes while parsing; instead
manually avoid recursion, and update the color hashes.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkrc.c
gtk/gtksettings.c

index c67b12cc9ee66075188eaea98cc581a36b49c397..b8a952aabb0f5b0d88a0dd200f736837f585b9b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2006-04-30  Matthias Clasen  <mclasen@localhost.localdomain>
 
+       Fix problems with setting symbolic colors from rc files.
+       (#338345, Benjamin Berg)
+       
+       * gtk/gtkrc.c (gtk_rc_settings_changed, gtk_rc_font_name_changed) 
+       (gtk_rc_color_hash_changed, gtk_rc_reparse_all_for_settings): Don't
+       freeze notification for settings changes while parsing; instead
+       manually avoid recursion, and update the color hashes.
+
+2006-04-30  Matthias Clasen  <mclasen@localhost.localdomain>
+
+       * gtk/gtksettings.c (gtk_settings_class_init): Change the default
+       value of the gtk-color-scheme setting to "".
+
        * gtk/gtkprinteroption.c: 
        * gtk/gtkprinteroptionwidget.c: 
        * gtk/gtkprintunixdialog.c: Improve the print dialog layout,
index c67b12cc9ee66075188eaea98cc581a36b49c397..b8a952aabb0f5b0d88a0dd200f736837f585b9b2 100644 (file)
@@ -1,5 +1,18 @@
 2006-04-30  Matthias Clasen  <mclasen@localhost.localdomain>
 
+       Fix problems with setting symbolic colors from rc files.
+       (#338345, Benjamin Berg)
+       
+       * gtk/gtkrc.c (gtk_rc_settings_changed, gtk_rc_font_name_changed) 
+       (gtk_rc_color_hash_changed, gtk_rc_reparse_all_for_settings): Don't
+       freeze notification for settings changes while parsing; instead
+       manually avoid recursion, and update the color hashes.
+
+2006-04-30  Matthias Clasen  <mclasen@localhost.localdomain>
+
+       * gtk/gtksettings.c (gtk_settings_class_init): Change the default
+       value of the gtk-color-scheme setting to "".
+
        * gtk/gtkprinteroption.c: 
        * gtk/gtkprinteroptionwidget.c: 
        * gtk/gtkprintunixdialog.c: Improve the print dialog layout,
index 17f3993ea8c33546ed9321dde3225c35cf57b9be..d03b8473efa6a76cf71490c37ea20fe26bce7f90 100644 (file)
@@ -127,6 +127,8 @@ struct _GtkRcContext
   GtkStyle *default_style;
 
   GHashTable *color_hash;
+
+  guint reloading : 1;
 };
 
 #define GTK_RC_STYLE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_RC_STYLE, GtkRcStylePrivate))
@@ -618,6 +620,9 @@ gtk_rc_settings_changed (GtkSettings  *settings,
   gchar *new_theme_name;
   gchar *new_key_theme_name;
 
+  if (context->reloading)
+    return;
+
   g_object_get (settings,
                "gtk-theme-name", &new_theme_name,
                "gtk-key-theme-name", &new_key_theme_name,
@@ -640,7 +645,8 @@ gtk_rc_font_name_changed (GtkSettings  *settings,
                           GParamSpec   *pspec,
                           GtkRcContext *context)
 {
-  _gtk_rc_context_get_default_font_name (settings);
+  if (!context->reloading)
+    _gtk_rc_context_get_default_font_name (settings);
 }
 
 static void
@@ -655,8 +661,9 @@ gtk_rc_color_hash_changed (GtkSettings  *settings,
 
   if (context->color_hash)
     g_hash_table_ref (context->color_hash);
-  
-  gtk_rc_reparse_all_for_settings (settings, TRUE);
+
+  if (!context->reloading)
+    gtk_rc_reparse_all_for_settings (settings, TRUE);
 }
 
 static GtkRcContext *
@@ -1597,7 +1604,7 @@ gtk_rc_reparse_all_for_settings (GtkSettings *settings,
     {
       _gtk_binding_reset_parsed ();
       gtk_rc_clear_styles (context);
-      g_object_freeze_notify (G_OBJECT (context->settings));
+      context->reloading = TRUE;
 
       _gtk_settings_reset_rc_values (context->settings);
       tmp_list = context->rc_files;
@@ -1644,8 +1651,8 @@ gtk_rc_reparse_all_for_settings (GtkSettings *settings,
        gtk_rc_parse_named (context, context->theme_name, NULL);
       if (context->key_theme_name && context->key_theme_name[0])
        gtk_rc_parse_named (context, context->key_theme_name, "key");
-      
-      g_object_thaw_notify (G_OBJECT (context->settings));
+
+      context->reloading = FALSE;
 
       gtk_rc_reset_widgets (context->settings);
     }
index ca0deb6fdc2d6105fc1f63e20bf4e9b6ef74e728..05e300e43a63c71211602e0a8b7f1b4258eac8e8 100644 (file)
@@ -488,7 +488,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
                                             g_param_spec_string ("gtk-color-scheme",
                                                                  P_("Color scheme"),
                                                                  P_("A palette of named colors for use in themes"),
-                                                                 "foreground:black\nbackground:gray",
+                                                                 "",
                                                                  GTK_PARAM_READWRITE),
                                             NULL);