forked from aniani/vim
patch 8.2.3654: GTK: a touch-drag does not update the selection
Problem: GTK: a touch-drag does not update the selection. Solution: Add GDK_BUTTON1_MASK to the state. (Chris Dalton, close #9196, closes #9194)
This commit is contained in:
parent
b771b6b5fe
commit
ee93e327ba
@ -396,6 +396,12 @@ static int using_gnome = 0;
|
|||||||
# define using_gnome 0
|
# define using_gnome 0
|
||||||
#endif
|
#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
|
* Parse the GUI related command-line arguments. Any arguments used are
|
||||||
* deleted from argv, and *argc is decremented accordingly. This is called
|
* deleted from argv, and *argc is decremented accordingly. This is called
|
||||||
@ -1585,6 +1591,9 @@ process_motion_notify(int x, int y, GdkModifierType state)
|
|||||||
int_u vim_modifiers;
|
int_u vim_modifiers;
|
||||||
GtkAllocation allocation;
|
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 |
|
button = (state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK |
|
||||||
GDK_BUTTON3_MASK | GDK_BUTTON4_MASK |
|
GDK_BUTTON3_MASK | GDK_BUTTON4_MASK |
|
||||||
GDK_BUTTON5_MASK))
|
GDK_BUTTON5_MASK))
|
||||||
@ -1811,7 +1820,11 @@ button_press_event(GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
// Keep in sync with gui_x11.c.
|
// Keep in sync with gui_x11.c.
|
||||||
// Buttons 4-7 are handled in scroll_event()
|
// 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 2: button = MOUSE_MIDDLE; break;
|
||||||
case 3: button = MOUSE_RIGHT; break;
|
case 3: button = MOUSE_RIGHT; break;
|
||||||
case 8: button = MOUSE_X1; break;
|
case 8: button = MOUSE_X1; break;
|
||||||
@ -1906,6 +1919,13 @@ button_release_event(GtkWidget *widget UNUSED,
|
|||||||
|
|
||||||
gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
|
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;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -757,6 +757,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3654,
|
||||||
/**/
|
/**/
|
||||||
3653,
|
3653,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user