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
|
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
|
core_height height of the text box in screen cells
|
||||||
firstline line of the buffer at top (1 unless scrolled)
|
firstline line of the buffer at top (1 unless scrolled)
|
||||||
(not the value of the "firstline" property)
|
(not the value of the "firstline" property)
|
||||||
|
lastline line of the buffer at the bottom
|
||||||
scrollbar non-zero if a scrollbar is displayed
|
scrollbar non-zero if a scrollbar is displayed
|
||||||
visible one if the popup is displayed, zero if hidden
|
visible one if the popup is displayed, zero if hidden
|
||||||
Note that these are the actual screen positions. They differ
|
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;
|
wp->w_height = wp->w_maxheight;
|
||||||
if (wp->w_height > Rows - wp->w_winrow)
|
if (wp->w_height > Rows - wp->w_winrow)
|
||||||
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)
|
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, "scrollbar", wp->w_has_scrollbar);
|
||||||
dict_add_number(dict, "firstline", wp->w_topline);
|
dict_add_number(dict, "firstline", wp->w_topline);
|
||||||
|
dict_add_number(dict, "lastline", wp->w_botline - 1);
|
||||||
dict_add_number(dict, "visible",
|
dict_add_number(dict, "visible",
|
||||||
win_valid(wp) && (wp->w_popup_flags & POPF_HIDDEN) == 0);
|
win_valid(wp) && (wp->w_popup_flags & POPF_HIDDEN) == 0);
|
||||||
|
|
||||||
|
@@ -142,6 +142,7 @@ func Test_popup_with_border_and_padding()
|
|||||||
\ height: 3,
|
\ height: 3,
|
||||||
\ core_height: 1,
|
\ core_height: 1,
|
||||||
\ firstline: 1,
|
\ firstline: 1,
|
||||||
|
\ lastline: 1,
|
||||||
\ scrollbar: 0,
|
\ scrollbar: 0,
|
||||||
\ visible: 1}
|
\ visible: 1}
|
||||||
let winid = popup_create('hello border', #{line: 2, col: 3, border: []})",
|
let winid = popup_create('hello border', #{line: 2, col: 3, border: []})",
|
||||||
@@ -186,6 +187,7 @@ func Test_popup_with_border_and_padding()
|
|||||||
\ scrollbar: 0,
|
\ scrollbar: 0,
|
||||||
\ core_height: 1,
|
\ core_height: 1,
|
||||||
\ firstline: 1,
|
\ firstline: 1,
|
||||||
|
\ lastline: 1,
|
||||||
\ visible: 1}, popup_getpos(winid))
|
\ visible: 1}, popup_getpos(winid))
|
||||||
|
|
||||||
call popup_clear()
|
call popup_clear()
|
||||||
@@ -385,6 +387,24 @@ func Test_popup_firstline()
|
|||||||
call assert_equal(0, popup_getoptions(winid).firstline)
|
call assert_equal(0, popup_getoptions(winid).firstline)
|
||||||
call assert_equal(10, popup_getpos(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)
|
call popup_close(winid)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -1795,6 +1815,7 @@ func Test_popup_scrollbar()
|
|||||||
\ minheight: 4,
|
\ minheight: 4,
|
||||||
\ maxheight: 4,
|
\ maxheight: 4,
|
||||||
\ firstline: 1,
|
\ firstline: 1,
|
||||||
|
\ lastline: 4,
|
||||||
\ wrap: v:true,
|
\ wrap: v:true,
|
||||||
\ scrollbar: v:true,
|
\ scrollbar: v:true,
|
||||||
\ mapping: v:false,
|
\ mapping: v:false,
|
||||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2250,
|
||||||
/**/
|
/**/
|
||||||
2249,
|
2249,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user