]> granicus.if.org Git - vim/commitdiff
patch 8.2.2932: select mode test fails v8.2.2932
authorBram Moolenaar <Bram@vim.org>
Thu, 3 Jun 2021 20:11:08 +0000 (22:11 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 3 Jun 2021 20:11:08 +0000 (22:11 +0200)
Problem:    Select mode test fails.
Solution:   Do not always reset the held mouse button.

src/mouse.c
src/normal.c
src/proto/normal.pro
src/version.c

index f1c1aabbc826667dc5f5cdb53c72d7e1fefd79c2..c17e26a3d6874aa55f8f4763a591a5244cbd27bb 100644 (file)
@@ -477,7 +477,7 @@ do_mouse(
                if ((mod_mask & MOD_MASK_MULTI_CLICK) == MOD_MASK_2CLICK)
                {
                    // double click opens new page
-                   end_visual_mode();
+                   end_visual_mode_keep_button();
                    tabpage_new();
                    tabpage_move(c1 == 0 ? 9999 : c1 - 1);
                }
@@ -489,7 +489,7 @@ do_mouse(
 
                    // It's like clicking on the status line of a window.
                    if (curwin != old_curwin)
-                       end_visual_mode();
+                       end_visual_mode_keep_button();
                }
            }
            else
@@ -1568,7 +1568,7 @@ retnomove:
 #endif
        if (flags & MOUSE_MAY_STOP_VIS)
        {
-           end_visual_mode();
+           end_visual_mode_keep_button();
            redraw_curbuf_later(INVERTED);      // delete the inversion
        }
 #if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD)
@@ -1717,7 +1717,7 @@ retnomove:
 #endif
                        && (flags & MOUSE_MAY_STOP_VIS))))
        {
-           end_visual_mode();
+           end_visual_mode_keep_button();
            redraw_curbuf_later(INVERTED);      // delete the inversion
        }
 #ifdef FEAT_CMDWIN
@@ -1821,7 +1821,7 @@ retnomove:
        // before moving the cursor for a left click, stop Visual mode
        if (flags & MOUSE_MAY_STOP_VIS)
        {
-           end_visual_mode();
+           end_visual_mode_keep_button();
            redraw_curbuf_later(INVERTED);      // delete the inversion
        }
 
index f8ec8e9ce32b8be6cea6bb6df35bf0425fd44ea6..c4c167935ed64cf615df74402dfaffabc613dac1 100644 (file)
@@ -1350,11 +1350,18 @@ call_yank_do_autocmd(int regname)
 
 /*
  * End Visual mode.
- * This function should ALWAYS be called to end Visual mode, except from
- * do_pending_operator().
+ * This function or the next should ALWAYS be called to end Visual mode, except
+ * from do_pending_operator().
  */
     void
-end_visual_mode(void)
+end_visual_mode()
+{
+    end_visual_mode_keep_button();
+    reset_held_button();
+}
+
+    void
+end_visual_mode_keep_button()
 {
 #ifdef FEAT_CLIPBOARD
     /*
@@ -1380,7 +1387,6 @@ end_visual_mode(void)
 #endif
 
     VIsual_active = FALSE;
-    reset_held_button();
     setmouse();
     mouse_dragging = 0;
 
index a1e31b341d692becb12afa35025eb2093c8c46cc..30f360b9353162dfc5ab9861da1ce781925fe6d1 100644 (file)
@@ -3,6 +3,7 @@ void init_normal_cmds(void);
 void normal_cmd(oparg_T *oap, int toplevel);
 void check_visual_highlight(void);
 void end_visual_mode(void);
+void end_visual_mode_keep_button(void);
 void reset_VIsual_and_resel(void);
 void reset_VIsual(void);
 void restore_visual_mode(void);
index 57a4dcd263ab634b28fd0d53a8b6b1f8c0931c81..5ebcfcb07d7a12aa640a788080608b1ff8544c51 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2932,
 /**/
     2931,
 /**/