]> granicus.if.org Git - vim/commitdiff
patch 8.0.1138: click in window toolbar starts Visual mode v8.0.1138
authorBram Moolenaar <Bram@vim.org>
Sat, 23 Sep 2017 13:08:17 +0000 (15:08 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 23 Sep 2017 13:08:17 +0000 (15:08 +0200)
Problem:    Click in window toolbar starts Visual mode.
Solution:   Add the MOUSE_WINBAR flag.

src/normal.c
src/ui.c
src/version.c
src/vim.h

index d2d1a292156a5e9bff29a4891035d657a5e92940..d78a53bae2e294d9ee781bd9a18bda3f63961e21 100644 (file)
@@ -2794,6 +2794,12 @@ do_mouse(
      */
     jump_flags = jump_to_mouse(jump_flags,
                        oap == NULL ? NULL : &(oap->inclusive), which_button);
+
+#ifdef FEAT_MENU
+    /* A click in the window toolbar has no side effects. */
+    if (jump_flags & MOUSE_WINBAR)
+       return FALSE;
+#endif
     moved = (jump_flags & CURSOR_MOVED);
     in_status_line = (jump_flags & IN_STATUS_LINE);
     in_sep_line = (jump_flags & IN_SEP_LINE);
index 867b8a5017738ae62fb1b08ea78d195173109fab..f175e1abff2dee97a62be38c34374e2f2667f525 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -2611,6 +2611,9 @@ jump_to_mouse(
 {
     static int on_status_line = 0;     /* #lines below bottom of window */
     static int on_sep_line = 0;        /* on separator right of window */
+#ifdef FEAT_MENU
+    static int  in_winbar = FALSE;
+#endif
     static int prev_row = -1;
     static int prev_col = -1;
     static win_T *dragwin = NULL;      /* window being dragged */
@@ -2699,8 +2702,10 @@ retnomove:
            /* A click in the window toolbar does not enter another window or
             * change Visual highlighting. */
            winbar_click(wp, col);
-           return IN_OTHER_WIN;
+           in_winbar = TRUE;
+           return IN_OTHER_WIN | MOUSE_WINBAR;
        }
+       in_winbar = FALSE;
 #endif
 
        /*
@@ -2829,6 +2834,13 @@ retnomove:
        }
        return IN_SEP_LINE;                     /* Cursor didn't move */
     }
+#ifdef FEAT_MENU
+    else if (in_winbar)
+    {
+       /* After a click on the window toolbar don't start Visual mode. */
+       return IN_OTHER_WIN | MOUSE_WINBAR;
+    }
+#endif
     else /* keep_window_focus must be TRUE */
     {
        /* before moving the cursor for a left click, stop Visual mode */
index abb9300d78a1bac32264a996dcaf68cd72e172e4..a2f71a3d9b1b0abe3bd38f2ebc5746bbafead26e 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1138,
 /**/
     1137,
 /**/
index 1c91b7dd66302f031298ad90832895d5265a75e5..43dbd8c4ab296117ea5012e50efed6a046de97bd 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1898,6 +1898,7 @@ typedef int sock_T;
 # define CURSOR_MOVED          0x100
 # define MOUSE_FOLD_CLOSE      0x200   /* clicked on '-' in fold column */
 # define MOUSE_FOLD_OPEN       0x400   /* clicked on '+' in fold column */
+# define MOUSE_WINBAR          0x800   /* in window toolbar */
 
 /* flags for jump_to_mouse() */
 # define MOUSE_FOCUS           0x01    /* need to stay in this window */