forked from aniani/vim
patch 8.1.1622: wrong width if displaying a lot of lines in a popup window
Problem: Wrong width if displaying a lot of lines in a popup window. Solution: Accurately compute the line overflow.
This commit is contained in:
parent
80edda1cf5
commit
e296e3177b
@ -855,8 +855,8 @@ popup_adjust_position(win_T *wp)
|
|||||||
if (wp->w_width < len)
|
if (wp->w_width < len)
|
||||||
wp->w_width = len;
|
wp->w_width = len;
|
||||||
// do not use the width of lines we're not going to show
|
// do not use the width of lines we're not going to show
|
||||||
if (wp->w_maxheight > 0 && wp->w_buffer->b_ml.ml_line_count
|
if (wp->w_maxheight > 0
|
||||||
- wp->w_topline + 1 + wrapped > wp->w_maxheight)
|
&& lnum - wp->w_topline + 1 + wrapped > wp->w_maxheight)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
>1+0&#ffffff0| @73
|
>1+0&#ffffff0| @73
|
||||||
|2| @73
|
|2| @73
|
||||||
|3| @73
|
|3| @73
|
||||||
|4| @33|3+0#0000001#ffd7ff255@4| +0#0000000#a8a8a8255| +0&#ffffff0@33
|
|4| @32|3+0#0000001#ffd7ff255@4| | +0#0000000#a8a8a8255| +0&#ffffff0@33
|
||||||
|5| @33|4+0#0000001#ffd7ff255@1| @2| +0#0000000#0000001| +0&#ffffff0@33
|
|5| @32|4+0#0000001#ffd7ff255@1| @3| +0#0000000#0000001| +0&#ffffff0@33
|
||||||
|6| @33|5+0#0000001#ffd7ff255| @3| +0#0000000#0000001| +0&#ffffff0@33
|
|6| @32|5+0#0000001#ffd7ff255| @4| +0#0000000#0000001| +0&#ffffff0@33
|
||||||
|7| @33|6+0#0000001#ffd7ff255@4| +0#0000000#a8a8a8255| +0&#ffffff0@33
|
|7| @32|6+0#0000001#ffd7ff255@5| +0#0000000#a8a8a8255| +0&#ffffff0@33
|
||||||
|8| @73
|
|8| @73
|
||||||
|9| @73
|
|9| @73
|
||||||
@57|1|,|1| @10|T|o|p|
|
@57|1|,|1| @10|T|o|p|
|
||||||
|
@ -1697,3 +1697,16 @@ func Test_popupwin_with_buffer()
|
|||||||
redraw
|
redraw
|
||||||
call popup_close(winid)
|
call popup_close(winid)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_popupwin_width()
|
||||||
|
let winid = popup_create(repeat(['short', 'long long long line', 'medium width'], 50), {
|
||||||
|
\ 'maxwidth': 40,
|
||||||
|
\ 'maxheight': 10,
|
||||||
|
\ })
|
||||||
|
for top in range(1, 20)
|
||||||
|
call popup_setoptions(winid, {'firstline': top})
|
||||||
|
redraw
|
||||||
|
call assert_equal(19, popup_getpos(winid).width)
|
||||||
|
endfor
|
||||||
|
call popup_clear()
|
||||||
|
endfunc
|
||||||
|
@ -777,6 +777,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 */
|
||||||
|
/**/
|
||||||
|
1622,
|
||||||
/**/
|
/**/
|
||||||
1621,
|
1621,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user