gtk+ r21359 - in branches/gtk-2-12: . gtk



Author: matthiasc
Date: Fri Sep 12 03:55:04 2008
New Revision: 21359
URL: http://svn.gnome.org/viewvc/gtk+?rev=21359&view=rev

Log:
        * 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.




Modified:
   branches/gtk-2-12/ChangeLog
   branches/gtk-2-12/gtk/gtkassistant.c
   branches/gtk-2-12/gtk/gtksettings.c
   branches/gtk-2-12/gtk/gtktexttag.c

Modified: branches/gtk-2-12/gtk/gtkassistant.c
==============================================================================
--- branches/gtk-2-12/gtk/gtkassistant.c	(original)
+++ branches/gtk-2-12/gtk/gtkassistant.c	Fri Sep 12 03:55:04 2008
@@ -601,13 +601,13 @@
 
   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

Modified: branches/gtk-2-12/gtk/gtksettings.c
==============================================================================
--- branches/gtk-2-12/gtk/gtksettings.c	(original)
+++ branches/gtk-2-12/gtk/gtksettings.c	Fri Sep 12 03:55:04 2008
@@ -1726,14 +1726,13 @@
       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 @@
 {
   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 @@
     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 @@
 			      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

Modified: branches/gtk-2-12/gtk/gtktexttag.c
==============================================================================
--- branches/gtk-2-12/gtk/gtktexttag.c	(original)
+++ branches/gtk-2-12/gtk/gtktexttag.c	Fri Sep 12 03:55:04 2008
@@ -1002,7 +1002,9 @@
       {
         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 @@
       {
         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 @@
       {
         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));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]