[gtk+] gesturesingle: Change default values of button and touch-only properties
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gesturesingle: Change default values of button and touch-only properties
- Date: Fri, 15 Aug 2014 11:55:36 +0000 (UTC)
commit 9ad4f1e62cff769e8eb4c67810c2ea718457ad5d
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Aug 11 21:43:58 2014 +0200
gesturesingle: Change default values of button and touch-only properties
This now defaults to sane values on mice, so touch-only is set to FALSE,
and button is set to GDK_BUTTON_PRIMARY;
https://bugzilla.gnome.org/show_bug.cgi?id=734285
gtk/gtkgesturesingle.c | 31 +++++++++++++++++--------------
1 files changed, 17 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkgesturesingle.c b/gtk/gtkgesturesingle.c
index 5d6507e..1ad2a4b 100644
--- a/gtk/gtkgesturesingle.c
+++ b/gtk/gtkgesturesingle.c
@@ -29,9 +29,12 @@
* is accessible through gtk_gesture_single_get_current_sequence() while the
* gesture is being interacted with.
*
- * By default gestures only react to touch events, gtk_gesture_single_set_touch_only()
- * can be used to change this default behavior. Callers may also specify
- * a mouse button number to interact with through gtk_gesture_single_set_button().
+ * By default gestures react to both %GDK_BUTTON_PRIMARY and touch
+ * events, gtk_gesture_single_set_touch_only() can be used to change the
+ * touch behavior. Callers may also specify a different mouse button number
+ * to interact with through gtk_gesture_single_set_button(), or react to any
+ * mouse button by setting 0. While the gesture is active, the button being
+ * currently pressed can be known through gtk_gesture_single_get_current_button().
*/
#include "config.h"
@@ -133,7 +136,7 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
GdkDevice *source_device;
GdkInputSource source;
guint button = 0, i;
- gboolean retval;
+ gboolean retval, test_touchscreen = FALSE;
source_device = gdk_event_get_source_device (event);
@@ -143,6 +146,10 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
priv = gtk_gesture_single_get_instance_private (GTK_GESTURE_SINGLE (controller));
source = gdk_device_get_source (source_device);
+ if (source != GDK_SOURCE_TOUCHSCREEN)
+ test_touchscreen = ((gtk_get_debug_flags () & GTK_DEBUG_TOUCHSCREEN) != 0 ||
+ g_getenv ("GTK_TEST_TOUCHSCREEN"));
+
switch (event->type)
{
case GDK_TOUCH_BEGIN:
@@ -156,13 +163,13 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
break;
case GDK_BUTTON_PRESS:
case GDK_BUTTON_RELEASE:
- if (priv->touch_only && source != GDK_SOURCE_TOUCHSCREEN)
+ if (priv->touch_only && !test_touchscreen && source != GDK_SOURCE_TOUCHSCREEN)
return FALSE;
button = event->button.button;
break;
case GDK_MOTION_NOTIFY:
- if (priv->touch_only && source != GDK_SOURCE_TOUCHSCREEN)
+ if (priv->touch_only && !test_touchscreen && source != GDK_SOURCE_TOUCHSCREEN)
return FALSE;
if (priv->current_button > 0 && priv->current_button <= 5 &&
@@ -288,7 +295,8 @@ _gtk_gesture_single_update_evmask (GtkGestureSingle *gesture)
priv = gtk_gesture_single_get_instance_private (gesture);
evmask = GDK_TOUCH_MASK;
- if (!priv->touch_only)
+ if (!priv->touch_only || g_getenv ("GTK_TEST_TOUCHSCREEN") ||
+ (gtk_get_debug_flags () & GTK_DEBUG_TOUCHSCREEN) != 0)
evmask |= GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON_MOTION_MASK;
@@ -301,13 +309,8 @@ gtk_gesture_single_init (GtkGestureSingle *gesture)
GtkGestureSinglePrivate *priv;
priv = gtk_gesture_single_get_instance_private (gesture);
-
- if (g_getenv ("GTK_TEST_TOUCHSCREEN") ||
- (gtk_get_debug_flags () & GTK_DEBUG_TOUCHSCREEN) != 0)
- priv->touch_only = FALSE;
- else
- priv->touch_only = TRUE;
-
+ priv->touch_only = FALSE;
+ priv->button = GDK_BUTTON_PRIMARY;
_gtk_gesture_single_update_evmask (gesture);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]