aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-30 07:10:39 +0800
committerGitHub <noreply@github.com>2022-10-30 07:10:39 +0800
commit23080a4d7a9043913cb4875e18118731a4562032 (patch)
tree17393363a61ac8c3d2555647286624d4f38c1e09
parentf2d9c330fc56d1e589d33c82d372532e1695ce40 (diff)
downloadrneovim-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.c2
-rw-r--r--src/nvim/normal.c2
-rw-r--r--test/functional/options/mousescroll_spec.lua18
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()