From 30efcf3d26bd14af71cd306c4c5f9e789a7130c9 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 3 Nov 2019 22:29:38 +0100 Subject: 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) --- src/popupwin.c | 3 +++ src/testdir/test_popupwin.vim | 21 +++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 26 insertions(+) (limited to 'src') 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! \") + call assert_equal(5, popup_getpos(winid).firstline) + call win_execute(winid, "normal! \") + call assert_equal(9, popup_getpos(winid).firstline) + call win_execute(winid, "normal! \") + call assert_equal(5, popup_getpos(winid).firstline) + + call win_execute(winid, "normal! \") + call assert_equal(11, popup_getpos(winid).firstline) + call win_execute(winid, "normal! \") + 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 @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2250, /**/ 2249, /**/ -- cgit v1.2.3