aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2018-10-19 10:42:34 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2018-12-31 12:44:22 +0100
commitf6f8f0ee762aed40586429362b83e5c7d0ca0686 (patch)
tree942795a42a1e519c1b934dfa9f195730dc1e3f6b
parentc3e2e40e028b66495a866785afaf1a6d7e5b3a3b (diff)
downloadrneovim-f6f8f0ee762aed40586429362b83e5c7d0ca0686.tar.gz
rneovim-f6f8f0ee762aed40586429362b83e5c7d0ca0686.tar.bz2
rneovim-f6f8f0ee762aed40586429362b83e5c7d0ca0686.zip
multigrid: add msg_scroll_start and msg_scroll_reset events
-rw-r--r--src/nvim/api/ui_events.in.h5
-rw-r--r--src/nvim/message.c3
-rw-r--r--src/nvim/screen.c1
-rw-r--r--test/functional/ui/screen.lua6
4 files changed, 15 insertions, 0 deletions
diff --git a/src/nvim/api/ui_events.in.h b/src/nvim/api/ui_events.in.h
index 48e43061c6..90f1d1b2a9 100644
--- a/src/nvim/api/ui_events.in.h
+++ b/src/nvim/api/ui_events.in.h
@@ -83,11 +83,16 @@ void grid_scroll(Integer grid, Integer top, Integer bot,
FUNC_API_SINCE(5) FUNC_API_REMOTE_IMPL;
void grid_destroy(Integer grid)
FUNC_API_SINCE(5) FUNC_API_REMOTE_ONLY;
+
void win_position(Integer win, Integer grid, Integer startrow,
Integer startcol, Integer width, Integer height)
FUNC_API_SINCE(5) FUNC_API_REMOTE_ONLY;
void win_hide(Integer win, Integer grid)
FUNC_API_SINCE(5) FUNC_API_REMOTE_ONLY;
+void win_scroll_over_start(void)
+ FUNC_API_SINCE(5) FUNC_API_REMOTE_ONLY;
+void win_scroll_over_reset(void)
+ FUNC_API_SINCE(5) FUNC_API_REMOTE_ONLY;
void popupmenu_show(Array items, Integer selected,
Integer row, Integer col, Integer grid)
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 27382cb951..37e40c3cc1 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -1884,6 +1884,9 @@ int msg_scrollsize(void)
*/
static void msg_scroll_up(void)
{
+ if (msg_scrolled == 0) {
+ ui_call_win_scroll_over_start();
+ }
if (dy_flags & DY_MSGSEP) {
if (msg_scrolled == 0) {
grid_fill(&default_grid, Rows-p_ch-1, Rows-p_ch, 0, (int)Columns,
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 953aea0094..c088367c69 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -292,6 +292,7 @@ void update_screen(int type)
* if the screen was scrolled up when displaying a message, scroll it down
*/
if (msg_scrolled) {
+ ui_call_win_scroll_over_reset();
clear_cmdline = true;
if (dy_flags & DY_MSGSEP) {
int valid = MAX(Rows - msg_scrollsize(), 0);
diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua
index 218d0490f1..8c5a44c6d3 100644
--- a/test/functional/ui/screen.lua
+++ b/test/functional/ui/screen.lua
@@ -646,6 +646,12 @@ function Screen:_handle_grid_resize(grid, width, height)
}
end
+function Screen:_handle_msg_scroll_start()
+end
+
+function Screen:_handle_msg_scroll_reset()
+end
+
function Screen:_handle_flush()
end