0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.2930: when a popup is visible a mouse move my restart Visual mode

Problem:    When a popup is visible a mouse move my restart Visual mode.
Solution:   Reset held_button when ending Visual mode. (closes #8318)
This commit is contained in:
Bram Moolenaar
2021-06-03 20:34:57 +02:00
parent 0a808598e4
commit 85eee5b969
4 changed files with 12 additions and 1 deletions

View File

@@ -2098,6 +2098,14 @@ nv_mouse(cmdarg_T *cap)
(void)do_mouse(cap->oap, cap->cmdchar, BACKWARD, cap->count1, 0); (void)do_mouse(cap->oap, cap->cmdchar, BACKWARD, cap->count1, 0);
} }
static int held_button = MOUSE_RELEASE;
void
reset_held_button()
{
held_button = MOUSE_RELEASE;
}
/* /*
* Check if typebuf 'tp' contains a terminal mouse code and returns the * Check if typebuf 'tp' contains a terminal mouse code and returns the
* modifiers found in typebuf in 'modifiers'. * modifiers found in typebuf in 'modifiers'.
@@ -2123,7 +2131,6 @@ check_termcode_mouse(
int is_release, release_is_ambiguous; int is_release, release_is_ambiguous;
int wheel_code = 0; int wheel_code = 0;
int current_button; int current_button;
static int held_button = MOUSE_RELEASE;
static int orig_num_clicks = 1; static int orig_num_clicks = 1;
static int orig_mouse_code = 0x0; static int orig_mouse_code = 0x0;
# ifdef CHECK_DOUBLE_CLICK # ifdef CHECK_DOUBLE_CLICK

View File

@@ -1380,6 +1380,7 @@ end_visual_mode(void)
#endif #endif
VIsual_active = FALSE; VIsual_active = FALSE;
reset_held_button();
setmouse(); setmouse();
mouse_dragging = 0; mouse_dragging = 0;

View File

@@ -13,6 +13,7 @@ int mouse_model_popup(void);
int jump_to_mouse(int flags, int *inclusive, int which_button); int jump_to_mouse(int flags, int *inclusive, int which_button);
void nv_mousescroll(cmdarg_T *cap); void nv_mousescroll(cmdarg_T *cap);
void nv_mouse(cmdarg_T *cap); void nv_mouse(cmdarg_T *cap);
void reset_held_button(void);
int check_termcode_mouse(char_u *tp, int *slen, char_u *key_name, char_u *modifiers_start, int idx, int *modifiers); int check_termcode_mouse(char_u *tp, int *slen, char_u *key_name, char_u *modifiers_start, int idx, int *modifiers);
int mouse_comp_pos(win_T *win, int *rowp, int *colp, linenr_T *lnump, int *plines_cache); int mouse_comp_pos(win_T *win, int *rowp, int *colp, linenr_T *lnump, int *plines_cache);
win_T *mouse_find_win(int *rowp, int *colp, mouse_find_T popup); win_T *mouse_find_win(int *rowp, int *colp, mouse_find_T popup);

View File

@@ -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 */
/**/
2930,
/**/ /**/
2929, 2929,
/**/ /**/