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

From: www-data at stage.maemo.org www-data at stage.maemo.org
Date: Mon Nov 27 18:07:37 EET 2006
Author: tko
Date: 2006-11-27 18:07:36 +0200 (Mon, 27 Nov 2006)
New Revision: 8363

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gtk/gtkwidget.c
Log:
Update the extension events on realized widgets

2006-11-27  Tommi Komulainen  <tommi.komulainen at nokia.com>

	* gtk/gtkwidget.c (gtk_widget_set_extension_events_internal): Accept
	NULL as window list in which case the list is taken from the widget. 
	(gtk_widget_realize): simplify accordingly
	(gtk_widget_set_extension_events): Update the extension events on
	GdkWindows if the widget is already realized.


Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2006-11-27 15:43:40 UTC (rev 8362)
+++ projects/haf/trunk/gtk+/ChangeLog	2006-11-27 16:07:36 UTC (rev 8363)
@@ -1,5 +1,13 @@
 2006-11-27  Tommi Komulainen  <tommi.komulainen at nokia.com>
 
+	* gtk/gtkwidget.c (gtk_widget_set_extension_events_internal): Accept
+	NULL as window list in which case the list is taken from the widget. 
+	(gtk_widget_realize): simplify accordingly
+	(gtk_widget_set_extension_events): Update the extension events on
+	GdkWindows if the widget is already realized.
+
+2006-11-27  Tommi Komulainen  <tommi.komulainen at nokia.com>
+
 	* gdk/x11/gdkinput.c (gdk_input_set_extension_events): Stop leaking
 	memory when called multiple times to enable extension events. Get the
 	root relative geometry in case we're called after ConfigureNotify.

Modified: projects/haf/trunk/gtk+/gtk/gtkwidget.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkwidget.c	2006-11-27 15:43:40 UTC (rev 8362)
+++ projects/haf/trunk/gtk+/gtk/gtkwidget.c	2006-11-27 16:07:36 UTC (rev 8363)
@@ -2484,8 +2484,19 @@
 					  GdkExtensionMode  mode,
 					  GList            *window_list)
 {
+  GList *free_list = NULL;
   GList *l;
 
+  if (window_list == NULL)
+    {
+      if (!GTK_WIDGET_NO_WINDOW (widget))
+	window_list = g_list_prepend (NULL, widget->window);
+      else
+	window_list = gdk_window_get_children (widget->window);
+
+      free_list = window_list;
+    }
+
   for (l = window_list; l != NULL; l = l->next)
     {
       GdkWindow *window = l->data;
@@ -2501,10 +2512,14 @@
 					  mode);
 
 	  children = gdk_window_get_children (window);
-	  gtk_widget_set_extension_events_internal (widget, mode, children);
+	  if (children)
+	    gtk_widget_set_extension_events_internal (widget, mode, children);
 	  g_list_free (children);
 	}
     }
+
+  if (free_list)
+    g_list_free (free_list);
 }
 /**
  * gtk_widget_realize:
@@ -2571,17 +2586,7 @@
       
       mode = gtk_widget_get_extension_events (widget);
       if (mode != GDK_EXTENSION_EVENTS_NONE)
-	{
-	  GList *window_list;
-
-	  if (!GTK_WIDGET_NO_WINDOW (widget))
-	    window_list = g_list_prepend (NULL, widget->window);
-	  else
-	    window_list = gdk_window_get_children (widget->window);
-
-	  gtk_widget_set_extension_events_internal (widget, mode, window_list);
-	  g_list_free (window_list);
-	}
+	gtk_widget_set_extension_events_internal (widget, mode, NULL);
     }
 }
 
@@ -6150,7 +6155,10 @@
   
   if (!modep)
     modep = g_new (GdkExtensionMode, 1);
-  
+
+  if (GTK_WIDGET_REALIZED (widget))
+    gtk_widget_set_extension_events_internal (widget, mode, NULL);
+
   *modep = mode;
   g_object_set_qdata (G_OBJECT (widget), quark_extension_event_mode, modep);
   g_object_notify (G_OBJECT (widget), "extension-events");


More information about the maemo-commits mailing list