# define using_gnome 0
#endif
+/*
+ * GTK doesn't set the GDK_BUTTON1_MASK state when dragging a touch. Add this
+ * state when dragging.
+ */
+static guint dragging_button_state = 0;
+
/*
* Parse the GUI related command-line arguments. Any arguments used are
* deleted from argv, and *argc is decremented accordingly. This is called
int_u vim_modifiers;
GtkAllocation allocation;
+ // Need to add GDK_BUTTON1_MASK state when dragging a touch.
+ state |= dragging_button_state;
+
button = (state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK |
GDK_BUTTON3_MASK | GDK_BUTTON4_MASK |
GDK_BUTTON5_MASK))
{
// Keep in sync with gui_x11.c.
// Buttons 4-7 are handled in scroll_event()
- case 1: button = MOUSE_LEFT; break;
+ case 1:
+ button = MOUSE_LEFT;
+ // needed for touch-drag
+ dragging_button_state |= GDK_BUTTON1_MASK;
+ break;
case 2: button = MOUSE_MIDDLE; break;
case 3: button = MOUSE_RIGHT; break;
case 8: button = MOUSE_X1; break;
gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
+ switch (event->button)
+ {
+ case 1: // MOUSE_LEFT
+ dragging_button_state = 0;
+ break;
+ }
+
return TRUE;
}