From da47f6e56a8d0f928a7d7024bc3acf5d8aeeaec2 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 14 Dec 2022 22:53:01 +0800 Subject: [PATCH] fix(terminal): fix 'mousescroll' not respected in terminal mode (cherry picked from commit 7c0e5e68a4c6cdcec3a0c5c64d79e95c8af59055) --- src/nvim/terminal.c | 4 ++-- test/functional/terminal/mouse_spec.lua | 30 ++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 1eeed34583..7670396f59 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -1415,8 +1415,8 @@ static bool send_mouse_event(Terminal *term, int c) int direction = c == K_MOUSEDOWN ? MSCR_DOWN : MSCR_UP; if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) { scroll_redraw(direction, curwin->w_botline - curwin->w_topline); - } else { - scroll_redraw(direction, 3L); + } else if (p_mousescroll_vert > 0) { + scroll_redraw(direction, p_mousescroll_vert); } curwin->w_redr_status = true; diff --git a/test/functional/terminal/mouse_spec.lua b/test/functional/terminal/mouse_spec.lua index 6e2c851df7..c0d75d2601 100644 --- a/test/functional/terminal/mouse_spec.lua +++ b/test/functional/terminal/mouse_spec.lua @@ -287,7 +287,7 @@ describe(':terminal mouse', function() ]]) end) - it('wont lose focus if another window is scrolled', function() + it("won't lose focus if another window is scrolled", function() feed('<4,0><4,0>') screen:expect([[ {7: 21 }line │line30 | @@ -310,6 +310,34 @@ describe(':terminal mouse', function() ]]) end) + it("scrolling another window respects 'mousescroll'", function() + command('set mousescroll=ver:1') + feed('<4,0>') + screen:expect([[ + {7: 26 }line │line30 | + {7: 27 }line │rows: 5, cols: 25 | + {7: 28 }line │rows: 5, cols: 24 | + {7: 29 }line │mouse enabled | + {7: 30 }line │{1: } | + ========== ========== | + {3:-- TERMINAL --} | + ]]) + command('set mousescroll=ver:10') + feed('<4,0>') + screen:expect([[ + {7: 16 }line │line30 | + {7: 17 }line │rows: 5, cols: 25 | + {7: 18 }line │rows: 5, cols: 24 | + {7: 19 }line │mouse enabled | + {7: 20 }line │{1: } | + ========== ========== | + {3:-- TERMINAL --} | + ]]) + command('set mousescroll=ver:0') + feed('<4,0>') + screen:expect_unchanged() + end) + it('will lose focus if another window is clicked', function() feed('<5,1>') screen:expect([[