[maemo-commits] [maemo-commits] r12090 - in projects/haf/trunk/gtk+: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jun 4 16:19:24 EEST 2007
Author: xan
Date: 2007-06-04 16:18:28 +0300 (Mon, 04 Jun 2007)
New Revision: 12090

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gtk/gtkwidget.c
Log:
2007-06-04  Xan Lopez  <xan.lopez at nokia.com>

	* gtk/gtkwidget.c (gtk_widget_propagate_state): apply patch from
	http://bugzilla.gnome.org/show_bug.cgi?id=435840 to fix inconsitency
	in the SAVED_STATE of a widget hierarchy that arises in some situations.


Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2007-06-04 13:15:01 UTC (rev 12089)
+++ projects/haf/trunk/gtk+/ChangeLog	2007-06-04 13:18:28 UTC (rev 12090)
@@ -1,3 +1,9 @@
+2007-06-04  Xan Lopez  <xan.lopez at nokia.com>
+
+	* gtk/gtkwidget.c (gtk_widget_propagate_state): apply patch from
+	http://bugzilla.gnome.org/show_bug.cgi?id=435840 to fix inconsitency
+	in the SAVED_STATE of a widget hierarchy that arises in some situations.
+
 2007-05-31  Tommi Komulainen  <tommi.komulainen at nokia.com>
 
 	* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): Switch submenu

Modified: projects/haf/trunk/gtk+/gtk/gtkwidget.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkwidget.c	2007-06-04 13:15:01 UTC (rev 12089)
+++ projects/haf/trunk/gtk+/gtk/gtkwidget.c	2007-06-04 13:18:28 UTC (rev 12090)
@@ -7468,36 +7468,28 @@
 gtk_widget_propagate_state (GtkWidget           *widget,
 			    GtkStateData        *data)
 {
-  guint8 old_state;
+  guint8 old_state = GTK_WIDGET_STATE (widget);
+  guint8 old_saved_state = GTK_WIDGET_SAVED_STATE (widget);
 
   /* don't call this function with state==GTK_STATE_INSENSITIVE,
    * parent_sensitive==TRUE on a sensitive widget
    */
 
-  old_state = GTK_WIDGET_STATE (widget);
 
   if (data->parent_sensitive)
-    {
-      GTK_WIDGET_SET_FLAGS (widget, GTK_PARENT_SENSITIVE);
+    GTK_WIDGET_SET_FLAGS (widget, GTK_PARENT_SENSITIVE);
+  else
+    GTK_WIDGET_UNSET_FLAGS (widget, GTK_PARENT_SENSITIVE);
 
-      if (GTK_WIDGET_IS_SENSITIVE (widget))
-	{
-	  if (data->state_restoration)
-	    GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
-	  else
-	    GTK_WIDGET_STATE (widget) = data->state;
-	}
+  if (GTK_WIDGET_IS_SENSITIVE (widget))
+    {
+      if (data->state_restoration)
+        GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
       else
-	{
-	  GTK_WIDGET_STATE (widget) = GTK_STATE_INSENSITIVE;
-	  if (!data->state_restoration &&
-	      data->state != GTK_STATE_INSENSITIVE)
-	    GTK_WIDGET_SAVED_STATE (widget) = data->state;
-	}
+        GTK_WIDGET_STATE (widget) = data->state;
     }
   else
     {
-      GTK_WIDGET_UNSET_FLAGS (widget, GTK_PARENT_SENSITIVE);
       if (!data->state_restoration)
 	{
 	  if (data->state != GTK_STATE_INSENSITIVE)
@@ -7517,19 +7509,19 @@
 	gtk_window_set_focus (GTK_WINDOW (window), NULL);
     }
 
-  if (old_state != GTK_WIDGET_STATE (widget))
+  if (old_state != GTK_WIDGET_STATE (widget) ||
+      old_saved_state != GTK_WIDGET_SAVED_STATE (widget))
     {
       g_object_ref (widget);
-      
+
       if (!GTK_WIDGET_IS_SENSITIVE (widget) && GTK_WIDGET_HAS_GRAB (widget))
 	gtk_grab_remove (widget);
-      
+
       g_signal_emit (widget, widget_signals[STATE_CHANGED], 0, old_state);
-      
+
       if (GTK_IS_CONTAINER (widget))
 	{
 	  data->parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (widget) != FALSE);
-	  data->state = GTK_WIDGET_STATE (widget);
 	  if (data->use_forall)
 	    gtk_container_forall (GTK_CONTAINER (widget),
 				  (GtkCallback) gtk_widget_propagate_state,


More information about the maemo-commits mailing list