[gtk+/multitouch: 46/57] scrolledwindow: Only do kinetic scrolling on touch devices
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/multitouch: 46/57] scrolledwindow: Only do kinetic scrolling on touch devices
- Date: Sun, 13 Nov 2011 17:53:40 +0000 (UTC)
commit 8b3fe04c70af2011273aaebc53e3adf49c6f955b
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Nov 1 12:52:50 2011 +0100
scrolledwindow: Only do kinetic scrolling on touch devices
This is sort of meaningless on pointer devices, besides it implies
a different input event handling on child widgets that's unnecessary
there.
gtk/gtkscrolledwindow.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index e196a35..91868f7 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -494,7 +494,9 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class)
/**
* GtkScrolledWindow:kinetic-scrolling:
*
- * Whether kinetic scrolling mode is enabled.
+ * Whether kinetic scrolling mode is enabled,
+ * only applies to devices with source %GDK_SOURCE_TOUCH
+ * or %GDK_SOURCE_MULTITOUCH.
*
* Since: 3.2
*/
@@ -2892,7 +2894,8 @@ gtk_scrolled_window_button_release_event (GtkWidget *widget,
GdkEventButton *event;
GdkDevice *device;
- if (_event->type != GDK_BUTTON_RELEASE)
+ if (_event->type != GDK_BUTTON_RELEASE &&
+ _event->type != GDK_TOUCH_RELEASE)
return FALSE;
event = (GdkEventButton *)_event;
@@ -2970,7 +2973,8 @@ gtk_scrolled_window_motion_notify_event (GtkWidget *widget,
gdouble dx, dy;
GdkEventMotion *event;
- if (_event->type != GDK_MOTION_NOTIFY)
+ if (_event->type != GDK_MOTION_NOTIFY &&
+ _event->type != GDK_TOUCH_MOTION)
return FALSE;
event = (GdkEventMotion *)_event;
@@ -3036,9 +3040,18 @@ gtk_scrolled_window_button_press_event (GtkWidget *widget,
gint threshold;
GtkWidget *event_widget;
GdkEventButton *event;
- GdkDevice *device;
+ GdkDevice *device, *source_device;
+ GdkInputSource source;
+
+ if (_event->type != GDK_BUTTON_PRESS &&
+ _event->type != GDK_TOUCH_PRESS)
+ return FALSE;
+
+ source_device = gdk_event_get_source_device (_event);
+ source = gdk_device_get_source (source_device);
- if (_event->type != GDK_BUTTON_PRESS)
+ if (source != GDK_SOURCE_TOUCH &&
+ source != GDK_SOURCE_MULTITOUCH)
return FALSE;
event = (GdkEventButton *)_event;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]