From 0f96a21e3fd6ba989e27a992e48c084dd02d8885 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Thu, 31 Jan 2019 13:13:34 +0100 Subject: multigrid: reset win scrolling after swap message --- src/nvim/screen.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/nvim/screen.c') diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 7252289e0e..759eefaecc 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -307,11 +307,15 @@ void update_screen(int type) ++display_tick; /* let syntax code know we're in a next round of * display updating */ - /* - * if the screen was scrolled up when displaying a message, scroll it down - */ - if (msg_scrolled) { + // Tricky: vim code can reset msg_scrolled behind our back, so need + // separate bookkeeping for now. + if (msg_did_scroll) { ui_call_win_scroll_over_reset(); + msg_did_scroll = false; + } + + // if the screen was scrolled up when displaying a message, scroll it down + if (msg_scrolled) { clear_cmdline = true; if (dy_flags & DY_MSGSEP) { int valid = MAX(Rows - msg_scrollsize(), 0); -- cgit