diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-03-14 15:28:08 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-03-14 15:28:08 +0100 |
commit | 193982650960f8411df51f3b3b0d44a75e1ac034 (patch) | |
tree | f62f2e11101ec6af8d66ca7e9ba32f70f3a848f8 | |
parent | b17893aa940dc7d45421f875f5d90855880aad27 (diff) | |
download | vim-git-193982650960f8411df51f3b3b0d44a75e1ac034.tar.gz |
patch 8.2.0380: tiny popup when creating a terminal popup without minwidthv8.2.0380
Problem: Tiny popup when creating a terminal popup without minwidth.
Solution: Use a default mininum size of 5 lines of 20 characters.
-rw-r--r-- | src/popupwin.c | 18 | ||||
-rw-r--r-- | src/testdir/dumps/Test_terminal_popup_m1.dump | 15 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 37 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 69 insertions, 3 deletions
diff --git a/src/popupwin.c b/src/popupwin.c index 8e981b0be..947dd91bc 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -1127,7 +1127,7 @@ popup_adjust_position(win_T *wp) int org_height = wp->w_height; int org_leftcol = wp->w_leftcol; int org_leftoff = wp->w_popup_leftoff; - int minwidth; + 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,6 +1249,18 @@ popup_adjust_position(win_T *wp) 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,8 +1431,8 @@ popup_adjust_position(win_T *wp) 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 (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; diff --git a/src/testdir/dumps/Test_terminal_popup_m1.dump b/src/testdir/dumps/Test_terminal_popup_m1.dump new file mode 100644 index 000000000..05a78f21f --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_m1.dump @@ -0,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| diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index e452e4547..88e433d7d 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -2400,6 +2400,43 @@ func Test_terminal_in_popup() 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, "\<C-L>") + call term_sendkeys(buf, ":call OpenTerm()\<CR>") + call term_wait(buf, 100) + call term_sendkeys(buf, ":\<CR>") + call VerifyScreenDump(buf, 'Test_terminal_popup_m1', {}) + + call term_wait(buf, 100) + call term_sendkeys(buf, ":q\<CR>") + call term_wait(buf, 100) " wait for terminal to vanish + call StopVimInTerminal(buf) + call delete('Xtext') call delete('XtermPopup') endfunc diff --git a/src/version.c b/src/version.c index 75baad19a..2d5c134c3 100644 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 380, +/**/ 379, /**/ 378, |