diff --git a/app/display/gimpdisplayshell-tool-events.c b/app/display/gimpdisplayshell-tool-events.c index f69b451..4d30722 100644 --- a/app/display/gimpdisplayshell-tool-events.c +++ b/app/display/gimpdisplayshell-tool-events.c @@ -135,10 +135,22 @@ gimp_display_shell_events (GtkWidget *widget, Gimp *gimp; gboolean set_display = FALSE; + g_printerr ("shell_event: %d\n", event->type); + /* are we in destruction? */ if (! shell->display || ! gimp_display_get_shell (shell->display)) return TRUE; + if (event->type == GDK_BUTTON_PRESS || + event->type == GDK_BUTTON_RELEASE) + { + GdkEventButton *bevent = (GdkEventButton *) event; + GdkDevice *device = bevent->device; + + if (gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN) + return FALSE; + } + gimp = gimp_display_get_gimp (shell->display); switch (event->type) @@ -246,6 +258,25 @@ gimp_display_shell_events (GtkWidget *widget, return FALSE; } +gboolean +gimp_display_shell_touch_events (GtkWidget *widget, + GdkEvent *event, + GimpDisplayShell *shell) +{ + GdkEventTouch *touch_event = event; + + g_printerr ("touch event: %s (%p)\n", + touch_event->type == GDK_TOUCH_BEGIN ? "begin" : + touch_event->type == GDK_TOUCH_UPDATE ? "update" : + touch_event->type == GDK_TOUCH_END ? "end" : + touch_event->type == GDK_TOUCH_CANCEL ? "cancel" : + "(?)", + touch_event->sequence); + + return TRUE; +} + + static gboolean gimp_display_shell_canvas_no_image_events (GtkWidget *canvas, GdkEvent *event, diff --git a/app/display/gimpdisplayshell-tool-events.h b/app/display/gimpdisplayshell-tool-events.h index 0ceeb6f..65da57f 100644 --- a/app/display/gimpdisplayshell-tool-events.h +++ b/app/display/gimpdisplayshell-tool-events.h @@ -22,6 +22,9 @@ gboolean gimp_display_shell_events (GtkWidget *widget, GdkEvent *event, GimpDisplayShell *shell); +gboolean gimp_display_shell_touch_events (GtkWidget *widget, + GdkEvent *event, + GimpDisplayShell *shell); gboolean gimp_display_shell_canvas_tool_events (GtkWidget *widget, GdkEvent *event, diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 07a9a38..9e25074 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -362,7 +362,8 @@ gimp_display_shell_init (GimpDisplayShell *shell) GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | - GDK_SCROLL_MASK)); + GDK_SCROLL_MASK | + GDK_TOUCH_MASK)); /* zoom model callback */ g_signal_connect_swapped (shell->zoom, "zoomed", @@ -379,6 +380,9 @@ gimp_display_shell_init (GimpDisplayShell *shell) g_signal_connect (shell, "key-press-event", G_CALLBACK (gimp_display_shell_events), shell); + g_signal_connect (shell, "touch-event", + G_CALLBACK (gimp_display_shell_touch_events), + shell); gimp_help_connect (GTK_WIDGET (shell), gimp_standard_help_func, GIMP_HELP_IMAGE_WINDOW, NULL);