summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-11-23 21:32:29 +0100
committerCarlos Garnacho <carlosg@gnome.org>2012-02-18 17:48:51 +0100
commitc201145d02f3984464d12c4afc5a57a39d874287 (patch)
treeb6961b48c54bf31bf715a664032fad739c871409
parenteb214aae741d5e69890faa1e7670479f57a9083a (diff)
downloadgtk+-c201145d02f3984464d12c4afc5a57a39d874287.tar.gz
gtk,pah: Handle press-and-hold on touch devices
-rw-r--r--gtk/gtkwidget.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 2dbc51b43f..d68b232f81 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -7050,7 +7050,8 @@ _gtk_widget_press_and_hold_check_cancel (GtkWidget *widget,
{
PressAndHoldData *data;
- if (event->type != GDK_BUTTON_RELEASE)
+ if (event->type != GDK_BUTTON_RELEASE &&
+ event->type != GDK_TOUCH_RELEASE)
return FALSE;
data = gtk_widget_peek_press_and_hold_data (widget);
@@ -7072,7 +7073,8 @@ _gtk_widget_press_and_hold_check_threshold (GtkWidget *widget,
PressAndHoldData *data;
GdkDevice *device;
- if (event->type != GDK_MOTION_NOTIFY)
+ if (event->type != GDK_MOTION_NOTIFY &&
+ event->type != GDK_TOUCH_MOTION)
return FALSE;
data = gtk_widget_peek_press_and_hold_data (widget);
@@ -7236,7 +7238,8 @@ _gtk_widget_press_and_hold_check_start (GtkWidget *widget,
{
PressAndHoldData *data = gtk_widget_peek_press_and_hold_data (widget);
- if (event->type != GDK_BUTTON_PRESS)
+ if (event->type != GDK_BUTTON_PRESS &&
+ event->type != GDK_TOUCH_PRESS)
return FALSE;
/* Press and hold already in process? */
@@ -7244,6 +7247,7 @@ _gtk_widget_press_and_hold_check_start (GtkWidget *widget,
return FALSE;
data = gtk_widget_get_press_and_hold_data (widget);
+ data->device = gdk_event_get_device ((GdkEvent *) event);
if (gtk_widget_press_and_hold_query (widget, data->device,
event->x, event->y))
@@ -7308,8 +7312,6 @@ _gtk_widget_press_and_hold_check_start (GtkWidget *widget,
gdk_threads_add_timeout (begin_ani_timeout,
gtk_widget_press_and_hold_begin_animation_timeout,
widget);
-
- data->device = gdk_event_get_device ((GdkEvent *) event);
}
return FALSE;