? app/lg
? app/widgets/gimptoolbox.c.fix1
? app/widgets/gimptoolbox.c.fix1.1
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gimp/ChangeLog,v
retrieving revision 1.7966.2.76
diff -u -u -r1.7966.2.76 ChangeLog
--- ChangeLog	7 Jul 2004 14:03:57 -0000	1.7966.2.76
+++ ChangeLog	10 Jul 2004 18:23:24 -0000
@@ -1,3 +1,9 @@
+2004-07-10  Robert Ögren  <gtk@roboros.com>
+
+	* app/widgets/gimptoolbox.c (toolbox_check_device): Don't check
+	for device change if the motion event is from a widget that does not
+	want extension events. Fixes bug #115774, at least on Windows.
+
 2004-07-07  Michael Natterer  <mitch@gimp.org>
 
 	Merged from HEAD:
Index: app/widgets/gimptoolbox.c
===================================================================
RCS file: /cvs/gnome/gimp/app/widgets/gimptoolbox.c,v
retrieving revision 1.111
diff -u -u -r1.111 gimptoolbox.c
--- app/widgets/gimptoolbox.c	16 Jan 2004 23:18:23 -0000	1.111
+++ app/widgets/gimptoolbox.c	10 Jul 2004 18:23:26 -0000
@@ -830,6 +830,21 @@
 		      GdkEvent  *event,
 		      Gimp      *gimp)
 {
+  GtkWidget *source;
+  /* This function is called for motion events from the toolbox */
+  /* It is possible that the event was propagated from a widget that does
+     not want extension events and therefore always get core pointer events
+     which can cause a false switch to the core pointer device
+     (see bug #115774) */
+
+  /* Filter out events which originate from widgets that don't want
+     extension events */
+  source = gtk_get_event_widget (event);
+  if (source &&
+      gtk_widget_get_extension_events (source) == GDK_EXTENSION_EVENTS_NONE)
+    return FALSE;
+
+  /* OK to go ahead and check for device change */
   gimp_devices_check_change (gimp, event);
 
   return FALSE;
