To: vim_dev@googlegroups.com Subject: Patch 8.1.1622 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- Bram@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 ///