]> Pileus Git - ~andy/gtk/commitdiff
gtk: don't let insensitive children eat scroll events when bubbling down
authorMichael Natterer <mitch@lanedo.com>
Thu, 22 Nov 2012 12:37:58 +0000 (13:37 +0100)
committerMichael Natterer <mitch@gimp.org>
Thu, 22 Nov 2012 12:53:33 +0000 (13:53 +0100)
When event capturing is enabled, stop propagating scroll events
at insensitive widgets, but don't handle them (don't return TRUE),
so they can bubble up again and reach their handling widgets.

gtk/gtkmain.c

index f490aa2f7e14fa613c716fcc323f92ab6682ed42..6cb174ead1ae0bd73aae2e862fe48051e24390c4 100644 (file)
@@ -2435,7 +2435,15 @@ propagate_event_down (GtkWidget *widget,
       widget = (GtkWidget *)l->data;
 
       if (!gtk_widget_is_sensitive (widget))
-        handled_event = TRUE;
+        {
+          /* stop propagating on SCROLL, but don't handle the event, so it
+           * can propagate up again and reach its handling widget
+           */
+          if (event->type == GDK_SCROLL)
+            break;
+          else
+            handled_event = TRUE;
+        }
       else
         handled_event = _gtk_widget_captured_event (widget, event);
     }