diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-11-03 22:29:38 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-11-03 22:29:38 +0100 |
commit | 30efcf3d26bd14af71cd306c4c5f9e789a7130c9 (patch) | |
tree | 515d0e5a4b3408311c2e671d3604348ad4131fe9 /src | |
parent | d047840ce4b770a86bacab0d62e72d0f61a2b8ab (diff) | |
download | vim-git-30efcf3d26bd14af71cd306c4c5f9e789a7130c9.tar.gz |
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.c | 3 | ||||
-rw-r--r-- | src/testdir/test_popupwin.vim | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 26 insertions, 0 deletions
diff --git a/src/popupwin.c b/src/popupwin.c index d6e620760..ddb1254d1 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 2c4da0b79..e38b7211e 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 0418204a5..5a4a1e485 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, |