[gtk+/touch-for-3.4: 9/65] scrolledwindow: Handle nested scrolled windows in kinetic scrolling
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/touch-for-3.4: 9/65] scrolledwindow: Handle nested scrolled windows in kinetic scrolling
- Date: Fri, 24 Feb 2012 15:25:36 +0000 (UTC)
commit e5ff3129aaf7f30f3ee07ce6ffdd9e011d39d987
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun Nov 13 18:38:12 2011 +0100
scrolledwindow: Handle nested scrolled windows in kinetic scrolling
The innermost scrolled window always gets to capture the events, all
scrolled windows above it just let the event go through. Ideally
reaching a limit on the innermost scrolled window would propagate
the dragging up the hierarchy in order to keep following the touch
coords, although that'd involve rather evil hacks just to cater
for broken UIs.
gtk/gtkscrolledwindow.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 976623f..5dc05bf 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -2863,6 +2863,14 @@ gtk_scrolled_window_button_press_event (GtkWidget *widget,
return FALSE;
event = (GdkEventButton *)_event;
+ event_widget = gtk_get_event_widget (_event);
+
+ /* If there's another scrolled window between the widget
+ * receiving the event and this capturing scrolled window,
+ * let it handle the events.
+ */
+ if (widget != gtk_widget_get_ancestor (event_widget, GTK_TYPE_SCROLLED_WINDOW))
+ return FALSE;
/* Check whether the button press is close to the previous one,
* take that as a shortcut to get the child widget handle events
@@ -2886,7 +2894,6 @@ gtk_scrolled_window_button_press_event (GtkWidget *widget,
if (!child)
return FALSE;
- event_widget = gtk_get_event_widget (_event);
if (priv->hscrollbar == event_widget || priv->vscrollbar == event_widget)
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]