diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2008-09-12 03:55:04 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2008-09-12 03:55:04 +0000 |
commit | 19d32714e9b003b2eb82fa8c624d12d71e2348dc (patch) | |
tree | b7670b13b6ad45960b7e1369eae1e7959e1efff1 | |
parent | d61669e6d306519b57f8114221d68e68bcd956ff (diff) | |
download | gtk+-19d32714e9b003b2eb82fa8c624d12d71e2348dc.tar.gz |
Unset the color when setting it to NULL instead of displaying a warning.
* gtk/gtktexttag.c (gtk_text_tag_set_property): Unset the color when
setting it to NULL instead of displaying a warning.
Patch by Xavier Claessens
* gtk/gtkassistant.c: Don't emit signals with extra parameters.
Patch by Antti Kaijanmäki
* gtk/gtksettings.c: When reconstructing the color hash, try
harder to avoid unnecessary notification, since this can lead
to infinite reloading of rc files in some situations.
svn path=/branches/gtk-2-12/; revision=21359
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gtk/gtkassistant.c | 4 | ||||
-rw-r--r-- | gtk/gtksettings.c | 37 | ||||
-rw-r--r-- | gtk/gtktexttag.c | 12 |
4 files changed, 51 insertions, 10 deletions
@@ -2,6 +2,14 @@ Merged from trunk: + * gtk/gtksettings.c: When reconstructing the color hash, try + harder to avoid unnecessary notification, since this can lead + to infinite reloading of rc files in some situations. + +2008-09-11 Matthias Clasen <mclasen@redhat.com> + + Merged from trunk: + Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page email diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c index e3d6af62bf..8863faee8e 100644 --- a/gtk/gtkassistant.c +++ b/gtk/gtkassistant.c @@ -601,13 +601,13 @@ on_assistant_apply (GtkWidget *widget, GtkAssistant *assistant) success = compute_next_step (assistant); - g_signal_emit (assistant, signals [APPLY], 0, priv->current_page->page); + g_signal_emit (assistant, signals [APPLY], 0); /* if the assistant hasn't switched to another page, just emit * the CLOSE signal, it't the last page in the assistant flow */ if (!success) - g_signal_emit (assistant, signals [CLOSE], 0, priv->current_page->page); + g_signal_emit (assistant, signals [CLOSE], 0); } static void diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index 8fdcfb9a37..ccd0a4d130 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -1726,14 +1726,13 @@ _gtk_settings_handle_event (GdkEventSetting *event) if (property_id == PROP_COLOR_SCHEME) { GValue value = { 0, }; - + g_value_init (&value, G_TYPE_STRING); if (!gdk_screen_get_setting (settings->screen, pspec->name, &value)) g_value_set_static_string (&value, ""); merge_color_scheme (settings, &value, GTK_SETTINGS_SOURCE_XSETTING); g_value_unset (&value); } - g_object_notify (G_OBJECT (settings), pspec->name); } } @@ -2052,6 +2051,7 @@ update_color_hash (ColorSchemeData *data, { gboolean changed = FALSE; gint i; + GHashTable *old_hash; if ((str == NULL || *str == '\0') && (data->lastentry[source] == NULL || data->lastentry[source][0] == '\0')) @@ -2085,8 +2085,7 @@ update_color_hash (ColorSchemeData *data, return FALSE; /* Rebuild the merged hash table. */ - if (data->color_hash) - g_hash_table_unref (data->color_hash); + old_hash = data->color_hash; data->color_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) gdk_color_free); for (i = 0; i <= GTK_SETTINGS_SOURCE_APPLICATION; i++) @@ -2096,7 +2095,35 @@ update_color_hash (ColorSchemeData *data, data->color_hash); } - return TRUE; + if (old_hash) + { + /* now check if the merged hash has changed */ + changed = FALSE; + if (g_hash_table_size (old_hash) != g_hash_table_size (data->color_hash)) + changed = TRUE; + else + { + GHashTableIter iter; + gpointer key, value, new_value; + + g_hash_table_iter_init (&iter, old_hash); + while (g_hash_table_iter_next (&iter, &key, &value)) + { + new_value = g_hash_table_lookup (data->color_hash, key); + if (!new_value || !gdk_color_equal (value, new_value)) + { + changed = TRUE; + break; + } + } + } + + g_hash_table_unref (old_hash); + } + else + changed = TRUE; + + return changed; } static void diff --git a/gtk/gtktexttag.c b/gtk/gtktexttag.c index 0d7db4609a..edc12f936a 100644 --- a/gtk/gtktexttag.c +++ b/gtk/gtktexttag.c @@ -1002,7 +1002,9 @@ gtk_text_tag_set_property (GObject *object, { GdkColor color; - if (gdk_color_parse (g_value_get_string (value), &color)) + if (!g_value_get_string (value)) + set_bg_color (text_tag, NULL); /* reset to background_set to FALSE */ + else if (gdk_color_parse (g_value_get_string (value), &color)) set_bg_color (text_tag, &color); else g_warning ("Don't know color `%s'", g_value_get_string (value)); @@ -1015,7 +1017,9 @@ gtk_text_tag_set_property (GObject *object, { GdkColor color; - if (gdk_color_parse (g_value_get_string (value), &color)) + if (!g_value_get_string (value)) + set_fg_color (text_tag, NULL); /* reset to foreground_set to FALSE */ + else if (gdk_color_parse (g_value_get_string (value), &color)) set_fg_color (text_tag, &color); else g_warning ("Don't know color `%s'", g_value_get_string (value)); @@ -1295,7 +1299,9 @@ gtk_text_tag_set_property (GObject *object, { GdkColor color; - if (gdk_color_parse (g_value_get_string (value), &color)) + if (!g_value_get_string (value)) + set_pg_bg_color (text_tag, NULL); /* reset to paragraph_background_set to FALSE */ + else if (gdk_color_parse (g_value_get_string (value), &color)) set_pg_bg_color (text_tag, &color); else g_warning ("Don't know color `%s'", g_value_get_string (value)); |