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:
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2250,
|
||||
/**/
|
||||
2249,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user