0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

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)
This commit is contained in:
Bram Moolenaar
2019-11-03 22:29:38 +01:00
parent d047840ce4
commit 30efcf3d26
4 changed files with 28 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.1. Last change: 2019 Oct 20
*popup.txt* For Vim version 8.1. Last change: 2019 Nov 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -362,6 +362,7 @@ popup_getpos({id}) *popup_getpos()*
core_height height of the text box in screen cells
firstline line of the buffer at top (1 unless scrolled)
(not the value of the "firstline" property)
lastline line of the buffer at the bottom
scrollbar non-zero if a scrollbar is displayed
visible one if the popup is displayed, zero if hidden
Note that these are the actual screen positions. They differ

View File

@@ -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);

View File

@@ -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,

View File

@@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2250,
/**/
2249,
/**/