diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-11-23 21:32:29 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2012-02-18 17:48:51 +0100 |
commit | c201145d02f3984464d12c4afc5a57a39d874287 (patch) | |
tree | b6961b48c54bf31bf715a664032fad739c871409 | |
parent | eb214aae741d5e69890faa1e7670479f57a9083a (diff) | |
download | gtk+-c201145d02f3984464d12c4afc5a57a39d874287.tar.gz |
gtk,pah: Handle press-and-hold on touch devices
-rw-r--r-- | gtk/gtkwidget.c | 12 |
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; |