changeset 24784:288565c9b4e0 v8.2.2930

patch 8.2.2930: when a popup is visible a mouse move my restart Visual mode Commit: https://github.com/vim/vim/commit/85eee5b969485142b54337cadadd65a38e7d7396 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jun 3 20:34:57 2021 +0200 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 https://github.com/vim/vim/issues/8318)
author Bram Moolenaar <Bram@vim.org>
date Thu, 03 Jun 2021 20:45:03 +0200
parents d0385e7a51bf
children cbbb6681c0ba
files src/mouse.c src/normal.c src/proto/mouse.pro src/version.c
diffstat 4 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -2098,6 +2098,14 @@ nv_mouse(cmdarg_T *cap)
     (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
  * modifiers found in typebuf in 'modifiers'.
@@ -2123,7 +2131,6 @@ check_termcode_mouse(
     int		is_release, release_is_ambiguous;
     int		wheel_code = 0;
     int		current_button;
-    static int	held_button = MOUSE_RELEASE;
     static int	orig_num_clicks = 1;
     static int	orig_mouse_code = 0x0;
 # ifdef CHECK_DOUBLE_CLICK
--- a/src/normal.c
+++ b/src/normal.c
@@ -1380,6 +1380,7 @@ end_visual_mode(void)
 #endif
 
     VIsual_active = FALSE;
+    reset_held_button();
     setmouse();
     mouse_dragging = 0;
 
--- a/src/proto/mouse.pro
+++ b/src/proto/mouse.pro
@@ -13,6 +13,7 @@ int mouse_model_popup(void);
 int jump_to_mouse(int flags, int *inclusive, int which_button);
 void nv_mousescroll(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 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);
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2930,
+/**/
     2929,
 /**/
     2928,