diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-30 07:10:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-30 07:10:39 +0800 |
commit | 23080a4d7a9043913cb4875e18118731a4562032 (patch) | |
tree | 17393363a61ac8c3d2555647286624d4f38c1e09 | |
parent | f2d9c330fc56d1e589d33c82d372532e1695ce40 (diff) | |
download | rneovim-23080a4d7a9043913cb4875e18118731a4562032.tar.gz rneovim-23080a4d7a9043913cb4875e18118731a4562032.tar.bz2 rneovim-23080a4d7a9043913cb4875e18118731a4562032.zip |
fix(mouse): ensure no scrolling with "ver:0" in 'mousescroll' (#20861)
-rw-r--r-- | src/nvim/edit.c | 2 | ||||
-rw-r--r-- | src/nvim/normal.c | 2 | ||||
-rw-r--r-- | test/functional/options/mousescroll_spec.lua | 18 |
3 files changed, 20 insertions, 2 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 90a18947dd..c99449e0f3 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -4147,7 +4147,7 @@ static void ins_mousescroll(int dir) if (dir == MSCR_DOWN || dir == MSCR_UP) { if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) { scroll_redraw(dir, (long)(curwin->w_botline - curwin->w_topline)); - } else { + } else if (p_mousescroll_vert > 0) { scroll_redraw(dir, p_mousescroll_vert); } } else { diff --git a/src/nvim/normal.c b/src/nvim/normal.c index e09fb149b4..3c49948b55 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -3417,7 +3417,7 @@ static void nv_mousescroll(cmdarg_T *cap) if (cap->arg == MSCR_UP || cap->arg == MSCR_DOWN) { if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) { (void)onepage(cap->arg ? FORWARD : BACKWARD, 1L); - } else { + } else if (p_mousescroll_vert > 0) { cap->count1 = p_mousescroll_vert; cap->count0 = p_mousescroll_vert; nv_scroll_line(cap); diff --git a/test/functional/options/mousescroll_spec.lua b/test/functional/options/mousescroll_spec.lua index 2c9b2d175e..5bff45a836 100644 --- a/test/functional/options/mousescroll_spec.lua +++ b/test/functional/options/mousescroll_spec.lua @@ -97,6 +97,24 @@ describe("'mousescroll'", function() eq(10, screencol()) scroll('left') eq(10, screencol()) + + -- vertical scrolling is still disabled with non-zero 'scrolloff' value + command('set scrolloff=1') + + eq(10, screenrow()) + scroll('up') + eq(10, screenrow()) + scroll('down') + eq(10, screenrow()) + + -- also in insert mode + feed('i') + + eq(10, screenrow()) + scroll('up') + eq(10, screenrow()) + scroll('down') + eq(10, screenrow()) end) local test_vertical_scrolling = function() |