patch 8.1.2250: CTRL-U and CTRL-D don't work in popup window
Problem: CTRL-U and CTRL-D don't work in popup window.
Solution: Initialize 'scroll'. Add "lastline" in popup_getpos().
(closes #5170)
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 2c4da0b..e38b721 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -142,6 +142,7 @@
\ height: 3,
\ core_height: 1,
\ firstline: 1,
+ \ lastline: 1,
\ scrollbar: 0,
\ visible: 1}
let winid = popup_create('hello border', #{line: 2, col: 3, border: []})",
@@ -186,6 +187,7 @@
\ scrollbar: 0,
\ core_height: 1,
\ firstline: 1,
+ \ lastline: 1,
\ visible: 1}, popup_getpos(winid))
call popup_clear()
@@ -385,6 +387,24 @@
call assert_equal(0, popup_getoptions(winid).firstline)
call assert_equal(10, popup_getpos(winid).firstline)
+ " CTRL-D scrolls down half a page
+ let winid = popup_create(['xxx']->repeat(50), #{
+ \ maxheight: 8,
+ \ })
+ redraw
+ call assert_equal(1, popup_getpos(winid).firstline)
+ call win_execute(winid, "normal! \<C-D>")
+ call assert_equal(5, popup_getpos(winid).firstline)
+ call win_execute(winid, "normal! \<C-D>")
+ call assert_equal(9, popup_getpos(winid).firstline)
+ call win_execute(winid, "normal! \<C-U>")
+ call assert_equal(5, popup_getpos(winid).firstline)
+
+ call win_execute(winid, "normal! \<C-F>")
+ call assert_equal(11, popup_getpos(winid).firstline)
+ call win_execute(winid, "normal! \<C-B>")
+ call assert_equal(5, popup_getpos(winid).firstline)
+
call popup_close(winid)
endfunc
@@ -1795,6 +1815,7 @@
\ minheight: 4,
\ maxheight: 4,
\ firstline: 1,
+ \ lastline: 4,
\ wrap: v:true,
\ scrollbar: v:true,
\ mapping: v:false,