diff options
author | Matthias Clasen <mclasen@localhost.localdomain> | 2006-04-30 06:10:37 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2006-04-30 06:10:37 +0000 |
commit | a5f63de17bea5673910d79e273d1cab7764a8ca2 (patch) | |
tree | be2c322fb1e22bdd1570b3386df5f1470686e8d8 | |
parent | bf937f76e5b875dceea286e05b9fb0cfe1f01edf (diff) | |
download | gdk-pixbuf-a5f63de17bea5673910d79e273d1cab7764a8ca2.tar.gz |
Fix problems with setting symbolic colors from rc files. (#338345,
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.
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 13 | ||||
-rw-r--r-- | gtk/gtkrc.c | 19 | ||||
-rw-r--r-- | gtk/gtksettings.c | 2 |
4 files changed, 40 insertions, 7 deletions
@@ -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, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c67b12cc9..b8a952aab 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -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, diff --git a/gtk/gtkrc.c b/gtk/gtkrc.c index 17f3993ea..d03b8473e 100644 --- a/gtk/gtkrc.c +++ b/gtk/gtkrc.c @@ -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); } diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index ca0deb6fd..05e300e43 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -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); |