patch 8.1.1400: using global pointer for tab-local popups is clumsy
Problem: Using global pointer for tab-local popups is clumsy.
Solution: Use the pointer in tabpage_T.
diff --git a/src/eval.c b/src/eval.c
index fb417c8..7fbd770 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5589,12 +5589,8 @@
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
NULL, NULL);
- for (wp = first_tab_popupwin; wp != NULL; wp = wp->w_next)
- abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
- NULL, NULL);
FOR_ALL_TABPAGES(tp)
- if (tp != curtab)
- for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
+ for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
NULL, NULL);
#endif
@@ -8816,12 +8812,11 @@
if (nr >= LOWEST_WIN_ID)
{
#ifdef FEAT_TEXT_PROP
- // popup windows are in a separate list
- for (wp = (tp == NULL || tp == curtab)
- ? first_tab_popupwin : tp->tp_first_popupwin;
- wp != NULL; wp = wp->w_next)
+ // check tab-local popup windows
+ for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
+ // check global popup windows
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;