1
0
forked from aniani/vim

patch 8.2.0286: cannot use popup_close() for a terminal popup

Problem:    Cannot use popup_close() for a terminal popup.
Solution:   Allow using popup_close(). (closes #5666)
This commit is contained in:
Bram Moolenaar
2020-02-20 20:12:29 +01:00
parent 0bbf722aaa
commit 11ec807639
6 changed files with 56 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2020 Feb 05 *popup.txt* For Vim version 8.2. Last change: 2020 Feb 20
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -148,6 +148,8 @@ different: *E863*
- The popup window always has focus, it is not possible to switch to another - The popup window always has focus, it is not possible to switch to another
window. window.
- When the job ends, the popup window closes. - When the job ends, the popup window closes.
- The popup window can be closed with `popup_close()`, the terminal buffer
then becomes hidden.
- The default Pmenu color is only used for the border and padding. To change - The default Pmenu color is only used for the border and padding. To change
the color of the terminal itself set 'wincolor'. the color of the terminal itself set 'wincolor'.

View File

@@ -2360,7 +2360,12 @@ f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
int id = (int)tv_get_number(argvars); int id = (int)tv_get_number(argvars);
win_T *wp; win_T *wp;
if (ERROR_IF_ANY_POPUP_WINDOW) if (
# ifdef FEAT_TERMINAL
// if the popup contains a terminal it will become hidden
curbuf->b_term == NULL &&
# endif
ERROR_IF_ANY_POPUP_WINDOW)
return; return;
wp = find_popup_win(id); wp = find_popup_win(id);

View File

@@ -0,0 +1,15 @@
>0+0&#ffffff0| @73
|1| @73
|2| @73
|3| @73
|4| @73
|5| @73
|6| @73
|7| @73
|8| @73
|9| @73
|1|0| @72
|1@1| @72
|1|2| @72
|1|3| @72
|:|c|a|l@1| |C|l|o|s|e|P|o|p|u|p|(|)| @38|1|,|1| @10|T|o|p|

View File

@@ -0,0 +1,15 @@
|0+0&#ffffff0| @73
|1| @73
|2| @73
|3| @12|╔+0#0000001#ffd7ff255|═@44|╗| +0#0000000#ffffff0@13
|4| @12|║+0#0000001#ffd7ff255|s+0#0000000#ffffff0|o|m|e| |t|e|x|t| @35|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|5| @12|║+0#0000001#ffd7ff255|t+0#0000000#ffffff0|o| >e+0&#ffff4012|d|i|t| +0&#ffffff0@37|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|6| @12|║+0#0000001#ffd7ff255|i+0#0000000#ffffff0|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|1|0| @11|║+0#0000001#ffd7ff255|/+0#0000000#ffffff0|e|d|i|t| @21|2|,|4| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
|1@1| @11|╚+0#0000001#ffd7ff255|═@44|╝| +0#0000000#ffffff0@13
|1|2| @72
|1|3| @72
@57|1|,|1| @10|A|l@1|

View File

@@ -2337,8 +2337,8 @@ func Test_terminal_in_popup()
\ 'call setline(1, range(20))', \ 'call setline(1, range(20))',
\ 'hi PopTerm ctermbg=grey', \ 'hi PopTerm ctermbg=grey',
\ 'func OpenTerm(setColor)', \ 'func OpenTerm(setColor)',
\ " let buf = term_start('" .. cmd .. " Xtext', #{hidden: 1, term_finish: 'close'})", \ " let s:buf = term_start('" .. cmd .. " Xtext', #{hidden: 1, term_finish: 'close'})",
\ ' let s:winid = popup_create(buf, #{minwidth: 45, minheight: 7, border: [], drag: 1, resize: 1})', \ ' let s:winid = popup_create(s:buf, #{minwidth: 45, minheight: 7, border: [], drag: 1, resize: 1})',
\ ' if a:setColor', \ ' if a:setColor',
\ ' call win_execute(s:winid, "set wincolor=PopTerm")', \ ' call win_execute(s:winid, "set wincolor=PopTerm")',
\ ' endif', \ ' endif',
@@ -2347,6 +2347,12 @@ func Test_terminal_in_popup()
\ 'func HidePopup()', \ 'func HidePopup()',
\ ' call popup_hide(s:winid)', \ ' call popup_hide(s:winid)',
\ 'endfunc', \ 'endfunc',
\ 'func ClosePopup()',
\ ' call popup_close(s:winid)',
\ 'endfunc',
\ 'func ReopenPopup()',
\ ' call popup_create(s:buf, #{minwidth: 40, minheight: 6, border: []})',
\ 'endfunc',
\ 'sleep 10m', \ 'sleep 10m',
\ 'redraw', \ 'redraw',
\ 'echo getwinvar(s:winid, "&buftype") win_gettype(s:winid)', \ 'echo getwinvar(s:winid, "&buftype") win_gettype(s:winid)',
@@ -2370,6 +2376,13 @@ func Test_terminal_in_popup()
call term_sendkeys(buf, "\<CR>") call term_sendkeys(buf, "\<CR>")
call term_wait(buf, 100) call term_wait(buf, 100)
call term_sendkeys(buf, "\<C-W>:call ClosePopup()\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_5', {})
call term_sendkeys(buf, "\<C-W>:call ReopenPopup()\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_6', {})
call term_wait(buf, 100)
call term_sendkeys(buf, ":q\<CR>") call term_sendkeys(buf, ":q\<CR>")
call term_wait(buf, 100) " wait for terminal to vanish call term_wait(buf, 100) " wait for terminal to vanish

View File

@@ -738,6 +738,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 */
/**/
286,
/**/ /**/
285, 285,
/**/ /**/