X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtksettings.c;h=1ec5ade207b300148caa60e888a7044aa8a86e20;hb=f72dd13a36526c2e811cf24609bdc577266b5a42;hp=24f9de3cc7b1d131402e1755e76e04f660698063;hpb=ca66090cd5318c0a569088824d2d058341c8ecf6;p=~andy%2Fgtk diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index 24f9de3cc..1ec5ade20 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -913,7 +913,7 @@ gtk_settings_class_init (GtkSettingsClass *class) result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-enable-input-feedback-sounds", /* Translators: this means sounds that are played as feedback to user input */ - P_("Aureal Input Feedback"), + P_("Audible Input Feedback"), P_("Whether to play event sounds as feedback to user input"), TRUE, GTK_PARAM_READWRITE), @@ -1892,14 +1892,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); } } @@ -2090,7 +2089,7 @@ settings_update_fontconfig (GtkSettings *settings) static guint last_update_timestamp; static gboolean last_update_needed; - gint timestamp; + guint timestamp; g_object_get (settings, "gtk-fontconfig-timestamp", ×tamp, @@ -2105,11 +2104,12 @@ settings_update_fontconfig (GtkSettings *settings) PangoFontMap *fontmap = pango_cairo_font_map_get_default (); gboolean update_needed = FALSE; - if (PANGO_IS_FC_FONT_MAP (fontmap) && - !FcConfigUptoDate (NULL) && FcInitReinitialize ()) + /* bug 547680 */ + if (PANGO_IS_FC_FONT_MAP (fontmap) && !FcConfigUptoDate (NULL)) { - update_needed = TRUE; pango_fc_font_map_cache_clear (PANGO_FC_FONT_MAP (fontmap)); + if (FcInitReinitialize ()) + update_needed = TRUE; } last_update_timestamp = timestamp; @@ -2257,6 +2257,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')) @@ -2290,8 +2291,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++) @@ -2301,7 +2301,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