mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
vim-patch:8.0.1138: click in window toolbar starts Visual mode
Problem: Click in window toolbar starts Visual mode.
Solution: Add the MOUSE_WINBAR flag.
eb163d73b1
This commit is contained in:
@@ -60,6 +60,7 @@ int jump_to_mouse(int flags,
|
||||
{
|
||||
static int on_status_line = 0; // #lines below bottom of window
|
||||
static int on_sep_line = 0; // on separator right of window
|
||||
static bool in_winbar = false;
|
||||
static int prev_row = -1;
|
||||
static int prev_col = -1;
|
||||
static win_T *dragwin = NULL; // window being dragged
|
||||
@@ -139,8 +140,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;
|
||||
|
||||
// winpos and height may change in win_enter()!
|
||||
if (grid == DEFAULT_GRID_HANDLE && row >= wp->w_height) {
|
||||
@@ -231,6 +234,9 @@ retnomove:
|
||||
did_drag |= count;
|
||||
}
|
||||
return IN_SEP_LINE; // Cursor didn't move
|
||||
} else if (in_winbar) {
|
||||
// After a click on the window toolbar don't start Visual mode.
|
||||
return IN_OTHER_WIN | MOUSE_WINBAR;
|
||||
} else {
|
||||
// keep_window_focus must be true
|
||||
// before moving the cursor for a left click, stop Visual mode
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#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
|
||||
|
@@ -2559,7 +2559,14 @@ do_mouse (
|
||||
* JUMP!
|
||||
*/
|
||||
jump_flags = jump_to_mouse(jump_flags,
|
||||
oap == NULL ? NULL : &(oap->inclusive), which_button);
|
||||
oap == NULL ? NULL : &(oap->inclusive),
|
||||
which_button);
|
||||
|
||||
// A click in the window toolbar has no side effects.
|
||||
if (jump_flags & MOUSE_WINBAR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
moved = (jump_flags & CURSOR_MOVED);
|
||||
in_status_line = (jump_flags & IN_STATUS_LINE);
|
||||
in_sep_line = (jump_flags & IN_SEP_LINE);
|
||||
|
Reference in New Issue
Block a user