Patch 8.1.1622
Problem: Wrong width if displaying a lot of lines in a popup window.
Solution: Accurately compute the line overflow.
Files: src/popupwin.c, src/testdir/test_popupwin.vim,
src/testdir/dumps/Test_popupwin_firstline.dump
*** ../vim-8.1.1621/src/popupwin.c 2019-07-03 22:50:37.200501406 +0200
--- src/popupwin.c 2019-07-03 23:15:17.883091670 +0200
***************
*** 855,862 ****
if (wp->w_width < len)
wp->w_width = len;
// 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
! - wp->w_topline + 1 + wrapped > wp->w_maxheight)
break;
}
--- 855,862 ----
if (wp->w_width < len)
wp->w_width = len;
// do not use the width of lines we're not going to show
! if (wp->w_maxheight > 0
! && lnum - wp->w_topline + 1 + wrapped > wp->w_maxheight)
break;
}
*** ../vim-8.1.1621/src/testdir/test_popupwin.vim 2019-07-03 22:50:37.200501406 +0200
--- src/testdir/test_popupwin.vim 2019-07-03 23:15:31.287002572 +0200
***************
*** 1697,1699 ****
--- 1697,1712 ----
redraw
call popup_close(winid)
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
*** ../vim-8.1.1621/src/testdir/dumps/Test_popupwin_firstline.dump 2019-06-26 03:39:59.897650758 +0200
--- src/testdir/dumps/Test_popupwin_firstline.dump 2019-07-03 23:17:23.998252553 +0200
***************
*** 1,10 ****
>1+0&#ffffff0| @73
|2| @73
|3| @73
! |4| @33|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
! |6| @33|5+0#0000001#ffd7ff255| @3| +0#0000000#0000001| +0&#ffffff0@33
! |7| @33|6+0#0000001#ffd7ff255@4| +0#0000000#a8a8a8255| +0&#ffffff0@33
|8| @73
|9| @73
@57|1|,|1| @10|T|o|p|
--- 1,10 ----
>1+0&#ffffff0| @73
|2| @73
|3| @73
! |4| @32|3+0#0000001#ffd7ff255@4| | +0#0000000#a8a8a8255| +0&#ffffff0@33
! |5| @32|4+0#0000001#ffd7ff255@1| @3| +0#0000000#0000001| +0&#ffffff0@33
! |6| @32|5+0#0000001#ffd7ff255| @4| +0#0000000#0000001| +0&#ffffff0@33
! |7| @32|6+0#0000001#ffd7ff255@5| +0#0000000#a8a8a8255| +0&#ffffff0@33
|8| @73
|9| @73
@57|1|,|1| @10|T|o|p|
*** ../vim-8.1.1621/src/version.c 2019-07-03 22:53:03.579656609 +0200
--- src/version.c 2019-07-03 23:17:14.506315757 +0200
***************
*** 779,780 ****
--- 779,782 ----
{ /* Add new patch number below this line */
+ /**/
+ 1622,
/**/
--
Yah, well, we had to carve our electrons out of driftwood we'd
find. In the winter. Uphill. Both ways.
/// Bram Moolenaar -- Br...@Moolenaar.net --
http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language --
http://www.Zimbu.org ///
\\\ help me help AIDS victims --
http://ICCF-Holland.org ///