summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-03 22:29:38 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-03 22:29:38 +0100
commit30efcf3d26bd14af71cd306c4c5f9e789a7130c9 (patch)
tree515d0e5a4b3408311c2e671d3604348ad4131fe9 /src
parentd047840ce4b770a86bacab0d62e72d0f61a2b8ab (diff)
patch 8.1.2250: CTRL-U and CTRL-D don't work in popup windowv8.1.2250
Problem: CTRL-U and CTRL-D don't work in popup window. Solution: Initialize 'scroll'. Add "lastline" in popup_getpos(). (closes #5170)
Diffstat (limited to 'src')
-rw-r--r--src/popupwin.c3
-rw-r--r--src/testdir/test_popupwin.vim21
-rw-r--r--src/version.c2
3 files changed, 26 insertions, 0 deletions
diff --git a/src/popupwin.c b/src/popupwin.c
index d6e6207608..ddb1254d1b 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1373,6 +1373,8 @@ popup_adjust_position(win_T *wp)
wp->w_height = wp->w_maxheight;
if (wp->w_height > Rows - wp->w_winrow)
wp->w_height = Rows - wp->w_winrow;
+ if (wp->w_height != org_height)
+ win_comp_scroll(wp);
if (center_vert)
{
@@ -2500,6 +2502,7 @@ f_popup_getpos(typval_T *argvars, typval_T *rettv)
dict_add_number(dict, "scrollbar", wp->w_has_scrollbar);
dict_add_number(dict, "firstline", wp->w_topline);
+ dict_add_number(dict, "lastline", wp->w_botline - 1);
dict_add_number(dict, "visible",
win_valid(wp) && (wp->w_popup_flags & POPF_HIDDEN) == 0);
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 2c4da0b794..e38b7211e0 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -142,6 +142,7 @@ func Test_popup_with_border_and_padding()
\ 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 @@ func Test_popup_with_border_and_padding()
\ scrollbar: 0,
\ core_height: 1,
\ firstline: 1,
+ \ lastline: 1,
\ visible: 1}, popup_getpos(winid))
call popup_clear()
@@ -385,6 +387,24 @@ func Test_popup_firstline()
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 @@ func Test_popup_scrollbar()
\ minheight: 4,
\ maxheight: 4,
\ firstline: 1,
+ \ lastline: 4,
\ wrap: v:true,
\ scrollbar: v:true,
\ mapping: v:false,
diff --git a/src/version.c b/src/version.c
index 0418204a5b..5a4a1e4851 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2250,
+/**/
2249,
/**/
2248,