forked from aniani/vim
patch 8.1.2110: CTRL-C closes two popups instead of one
Problem: CTRL-C closes two popups instead of one. Solution: Reset got_int when the filter consumed the key.
This commit is contained in:
@@ -1791,7 +1791,11 @@ vgetc(void)
|
||||
#endif
|
||||
#ifdef FEAT_TEXT_PROP
|
||||
if (popup_do_filter(c))
|
||||
{
|
||||
if (c == Ctrl_C)
|
||||
got_int = FALSE; // avoid looping
|
||||
c = K_IGNORE;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Need to process the character before we know it's safe to do something
|
||||
|
@@ -2568,4 +2568,26 @@ func Test_popupwin_getoptions_tablocal()
|
||||
quit
|
||||
endfunc
|
||||
|
||||
func Test_popupwin_cancel()
|
||||
let win1 = popup_create('one', #{line: 5, filter: {... -> 0}})
|
||||
let win2 = popup_create('two', #{line: 10, filter: {... -> 0}})
|
||||
let win3 = popup_create('three', #{line: 15, filter: {... -> 0}})
|
||||
call assert_equal(5, popup_getpos(win1).line)
|
||||
call assert_equal(10, popup_getpos(win2).line)
|
||||
call assert_equal(15, popup_getpos(win3).line)
|
||||
" TODO: this also works without patch 8.1.2110
|
||||
call feedkeys("\<C-C>", 'xt')
|
||||
call assert_equal(5, popup_getpos(win1).line)
|
||||
call assert_equal(10, popup_getpos(win2).line)
|
||||
call assert_equal({}, popup_getpos(win3))
|
||||
call feedkeys("\<C-C>", 'xt')
|
||||
call assert_equal(5, popup_getpos(win1).line)
|
||||
call assert_equal({}, popup_getpos(win2))
|
||||
call assert_equal({}, popup_getpos(win3))
|
||||
call feedkeys("\<C-C>", 'xt')
|
||||
call assert_equal({}, popup_getpos(win1))
|
||||
call assert_equal({}, popup_getpos(win2))
|
||||
call assert_equal({}, popup_getpos(win3))
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2
|
||||
|
@@ -753,6 +753,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2110,
|
||||
/**/
|
||||
2109,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user