summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-11-15 14:09:37 +0100
committerBram Moolenaar <Bram@vim.org>2020-11-15 14:09:37 +0100
commit2dfae04f376a58d4c5a801cb652c8eae65900672 (patch)
tree0fecb80c5ceb9c7991461859625ea3ae95c13f59
parente41decc892a115335259096c3bc0204dd99b372b (diff)
downloadvim-git-2dfae04f376a58d4c5a801cb652c8eae65900672.tar.gz
patch 8.2.1989: info popup triggers WinEnter and WinLeave autocommandsv8.2.1989
Problem: Info popup triggers WinEnter and WinLeave autocommands. Solution: Suppress autocommands for the info popup. (closes #7296)
-rw-r--r--src/popupmenu.c8
-rw-r--r--src/testdir/test_popupwin.vim4
-rw-r--r--src/version.c2
3 files changed, 14 insertions, 0 deletions
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 279a68d7a..8033d7211 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -795,6 +795,10 @@ pum_set_selected(int n, int repeat UNUSED)
use_popup = USEPOPUP_NORMAL;
else
use_popup = USEPOPUP_NONE;
+ if (use_popup != USEPOPUP_NONE)
+ // don't use WinEnter or WinLeave autocommands for the info
+ // popup
+ block_autocmds();
# endif
// Open a preview window and set "curwin" to it.
// 3 lines by default, prefer 'previewheight' if set and smaller.
@@ -973,6 +977,10 @@ pum_set_selected(int n, int repeat UNUSED)
// can't keep focus in a popup window
win_enter(firstwin, TRUE);
# endif
+# ifdef FEAT_PROP_POPUP
+ if (use_popup != USEPOPUP_NONE)
+ unblock_autocmds();
+# endif
}
#endif
}
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index fdfa305ba..e5d4697e5 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -3243,6 +3243,10 @@ func Get_popupmenu_lines()
call popup_show(id)
endif
endfunc
+
+ " Check that no autocommands are triggered for the info popup
+ au WinEnter * if win_gettype() == 'popup' | call setline(2, 'WinEnter') | endif
+ au WinLeave * if win_gettype() == 'popup' | call setline(2, 'WinLeave') | endif
END
return lines
endfunc
diff --git a/src/version.c b/src/version.c
index 502a876da..399007609 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1989,
+/**/
1988,
/**/
1987,