summaryrefslogtreecommitdiff
path: root/gtk/gtkmain.c
diff options
context:
space:
mode:
authorMichael Natterer <mitch@lanedo.com>2012-11-22 13:37:58 +0100
committerMichael Natterer <mitch@gimp.org>2012-11-22 13:53:33 +0100
commit2d9454363f961a5d1942db6146917e385a5123ff (patch)
tree226f1fe557f317690cae8b8573e67b40fc7019b7 /gtk/gtkmain.c
parenteb7bf0a2f4fe34d2c397e0106d470cc2771fa84c (diff)
downloadgtk+-2d9454363f961a5d1942db6146917e385a5123ff.tar.gz
gtk: don't let insensitive children eat scroll events when bubbling down
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.
Diffstat (limited to 'gtk/gtkmain.c')
-rw-r--r--gtk/gtkmain.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index f490aa2f7e..6cb174ead1 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -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);
}