mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.2963: GUI: mouse move may start Visual mode with a popup visible
Problem: GUI: mouse move may start Visual mode with a popup visible. Solution: Add special code for mouse move. (closes #8318)
This commit is contained in:
parent
dc73b4b75d
commit
445f11d5bc
@ -3071,6 +3071,9 @@ gui_send_mouse_event(
|
|||||||
*/
|
*/
|
||||||
switch (button)
|
switch (button)
|
||||||
{
|
{
|
||||||
|
case MOUSE_MOVE:
|
||||||
|
button_char = KE_MOUSEMOVE_XY;
|
||||||
|
goto button_set;
|
||||||
case MOUSE_X1:
|
case MOUSE_X1:
|
||||||
button_char = KE_X1MOUSE;
|
button_char = KE_X1MOUSE;
|
||||||
goto button_set;
|
goto button_set;
|
||||||
@ -4925,7 +4928,7 @@ gui_mouse_moved(int x, int y)
|
|||||||
if (popup_visible)
|
if (popup_visible)
|
||||||
// Generate a mouse-moved event, so that the popup can perhaps be
|
// Generate a mouse-moved event, so that the popup can perhaps be
|
||||||
// closed, just like in the terminal.
|
// closed, just like in the terminal.
|
||||||
gui_send_mouse_event(MOUSE_DRAG, x, y, FALSE, 0);
|
gui_send_mouse_event(MOUSE_MOVE, x, y, FALSE, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,8 +273,9 @@ enum key_extra
|
|||||||
, KE_FOCUSGAINED = 98 // focus gained
|
, KE_FOCUSGAINED = 98 // focus gained
|
||||||
, KE_FOCUSLOST = 99 // focus lost
|
, KE_FOCUSLOST = 99 // focus lost
|
||||||
, KE_MOUSEMOVE = 100 // mouse moved with no button down
|
, KE_MOUSEMOVE = 100 // mouse moved with no button down
|
||||||
, KE_CANCEL = 101 // return from vgetc()
|
, KE_MOUSEMOVE_XY = 101 // KE_MOUSEMOVE with coordinates
|
||||||
, KE_COMMAND = 102 // <Cmd> special key
|
, KE_CANCEL = 102 // return from vgetc()
|
||||||
|
, KE_COMMAND = 103 // <Cmd> special key
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5588,6 +5588,7 @@ check_termcode(
|
|||||||
&& key_name[0] == (int)KS_EXTRA
|
&& key_name[0] == (int)KS_EXTRA
|
||||||
&& (key_name[1] == (int)KE_X1MOUSE
|
&& (key_name[1] == (int)KE_X1MOUSE
|
||||||
|| key_name[1] == (int)KE_X2MOUSE
|
|| key_name[1] == (int)KE_X2MOUSE
|
||||||
|
|| key_name[1] == (int)KE_MOUSEMOVE_XY
|
||||||
|| key_name[1] == (int)KE_MOUSELEFT
|
|| key_name[1] == (int)KE_MOUSELEFT
|
||||||
|| key_name[1] == (int)KE_MOUSERIGHT
|
|| key_name[1] == (int)KE_MOUSERIGHT
|
||||||
|| key_name[1] == (int)KE_MOUSEDOWN
|
|| key_name[1] == (int)KE_MOUSEDOWN
|
||||||
@ -5601,6 +5602,9 @@ check_termcode(
|
|||||||
mouse_col = 128 * (bytes[0] - ' ' - 1) + bytes[1] - ' ' - 1;
|
mouse_col = 128 * (bytes[0] - ' ' - 1) + bytes[1] - ' ' - 1;
|
||||||
mouse_row = 128 * (bytes[2] - ' ' - 1) + bytes[3] - ' ' - 1;
|
mouse_row = 128 * (bytes[2] - ' ' - 1) + bytes[3] - ' ' - 1;
|
||||||
slen += num_bytes;
|
slen += num_bytes;
|
||||||
|
// equal to K_MOUSEMOVE
|
||||||
|
if (key_name[1] == (int)KE_MOUSEMOVE_XY)
|
||||||
|
key_name[1] = (int)KE_MOUSEMOVE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2963,
|
||||||
/**/
|
/**/
|
||||||
2962,
|
2962,
|
||||||
/**/
|
/**/
|
||||||
|
@ -1859,6 +1859,8 @@ typedef int sock_T;
|
|||||||
#define MOUSE_6 0x500 // scroll wheel left
|
#define MOUSE_6 0x500 // scroll wheel left
|
||||||
#define MOUSE_7 0x600 // scroll wheel right
|
#define MOUSE_7 0x600 // scroll wheel right
|
||||||
|
|
||||||
|
#define MOUSE_MOVE 0x700 // report mouse moved
|
||||||
|
|
||||||
// 0x20 is reserved by xterm
|
// 0x20 is reserved by xterm
|
||||||
#define MOUSE_DRAG_XTERM 0x40
|
#define MOUSE_DRAG_XTERM 0x40
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user