To: vim_dev@googlegroups.com Subject: Patch 8.2.0380 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0380 Problem: Tiny popup when creating a terminal popup without minwidth. Solution: Use a default mininum size of 5 lines of 20 characters. Files: src/popupwin.c, src/testdir/test_terminal.vim, src/testdir/dumps/Test_terminal_popup_m1.dump *** ../vim-8.2.0379/src/popupwin.c 2020-03-13 14:34:34.229357234 +0100 --- src/popupwin.c 2020-03-14 08:54:14.472105845 +0100 *************** *** 1127,1133 **** int org_height = wp->w_height; int org_leftcol = wp->w_leftcol; int org_leftoff = wp->w_popup_leftoff; ! int minwidth; int wantline = wp->w_wantline; // adjusted for textprop int wantcol = wp->w_wantcol; // adjusted for textprop int use_wantcol = wantcol != 0; --- 1127,1133 ---- int org_height = wp->w_height; int org_leftcol = wp->w_leftcol; int org_leftoff = wp->w_popup_leftoff; ! int minwidth, minheight; int wantline = wp->w_wantline; // adjusted for textprop int wantcol = wp->w_wantcol; // adjusted for textprop int use_wantcol = wantcol != 0; *************** *** 1249,1254 **** --- 1249,1266 ---- maxwidth = wp->w_maxwidth; } minwidth = wp->w_minwidth; + minheight = wp->w_minheight; + #ifdef FEAT_TERMINAL + // A terminal popup initially does not have content, use a default minimal + // width of 20 characters and height of 5 lines. + if (wp->w_buffer->b_term != NULL) + { + if (minwidth == 0) + minwidth = 20; + if (minheight == 0) + minheight = 5; + } + #endif // start at the desired first line if (wp->w_firstline > 0) *************** *** 1419,1426 **** wp->w_height = wp->w_buffer->b_ml.ml_line_count - wp->w_topline + 1 + wrapped; ! if (wp->w_minheight > 0 && wp->w_height < wp->w_minheight) ! wp->w_height = wp->w_minheight; if (wp->w_maxheight > 0 && wp->w_height > wp->w_maxheight) wp->w_height = wp->w_maxheight; w_height_before_limit = wp->w_height; --- 1431,1438 ---- wp->w_height = wp->w_buffer->b_ml.ml_line_count - wp->w_topline + 1 + wrapped; ! if (minheight > 0 && wp->w_height < minheight) ! wp->w_height = minheight; if (wp->w_maxheight > 0 && wp->w_height > wp->w_maxheight) wp->w_height = wp->w_maxheight; w_height_before_limit = wp->w_height; *** ../vim-8.2.0379/src/testdir/test_terminal.vim 2020-03-13 14:55:15.795899666 +0100 --- src/testdir/test_terminal.vim 2020-03-14 15:21:24.099612817 +0100 *************** *** 2400,2405 **** --- 2400,2442 ---- call term_wait(buf, 100) " wait for terminal to vanish call StopVimInTerminal(buf) + call delete('Xtext') + call delete('XtermPopup') + endfunc + + " Check a terminal in popup window uses the default mininum size. + func Test_terminal_in_popup_min_size() + CheckRunVimInTerminal + + let text =<< trim END + another text + to show + in a popup window + END + call writefile(text, 'Xtext') + let lines = [ + \ 'set t_u7=', + \ 'call setline(1, range(20))', + \ 'hi PopTerm ctermbg=grey', + \ 'func OpenTerm()', + \ " let s:buf = term_start('cat Xtext', #{hidden: 1})", + \ ' let g:winid = popup_create(s:buf, #{ border: []})', + \ 'endfunc', + \ ] + call writefile(lines, 'XtermPopup') + let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15}) + call term_wait(buf, 100) + call term_sendkeys(buf, "\") + call term_sendkeys(buf, ":call OpenTerm()\") + call term_wait(buf, 100) + call term_sendkeys(buf, ":\") + call VerifyScreenDump(buf, 'Test_terminal_popup_m1', {}) + + call term_wait(buf, 100) + call term_sendkeys(buf, ":q\") + call term_wait(buf, 100) " wait for terminal to vanish + call StopVimInTerminal(buf) + call delete('Xtext') call delete('XtermPopup') endfunc *** ../vim-8.2.0379/src/testdir/dumps/Test_terminal_popup_m1.dump 2020-03-14 15:27:25.578272858 +0100 --- src/testdir/dumps/Test_terminal_popup_m1.dump 2020-03-14 15:20:13.867865916 +0100 *************** *** 0 **** --- 1,15 ---- + |0+0&#ffffff0| @73 + |1| @73 + |2| @73 + |3| @73 + |4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 + |5| @24|║+0#0000001#ffd7ff255|a|n|o|t|h|e|r| |t|e|x|t| @7|║| +0#0000000#ffffff0@26 + |6| @24|║+0#0000001#ffd7ff255|t|o| |s|h|o|w| @12|║| +0#0000000#ffffff0@26 + |7| @24|║+0#0000001#ffd7ff255|i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @2|║| +0#0000000#ffffff0@26 + |8| @24|║+0#0000001#ffd7ff255| +0#4040ff13&> @18|║+0#0000001&| +0#0000000#ffffff0@26 + |9| @24|║+0#0000001#ffd7ff255| +0#4040ff13&@19|║+0#0000001&| +0#0000000#ffffff0@26 + |1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 + |1@1| @72 + |1|2| @72 + |1|3| @72 + |:| @55|1|,|1| @10|T|o|p| *** ../vim-8.2.0379/src/version.c 2020-03-14 07:46:36.661672970 +0100 --- src/version.c 2020-03-14 08:49:10.345533112 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 380, /**/ -- hundred-and-one symptoms of being an internet addict: 255. You work for a newspaper and your editor asks you to write an article about Internet addiction...in the "first person." /// 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 ///