Patch 8.1.1400

11 views
Skip to first unread message

Bram Moolenaar

unread,
May 26, 2019, 12:48:41 PM5/26/19
to vim...@googlegroups.com

Patch 8.1.1400
Problem: Using global pointer for tab-local popups is clumsy.
Solution: Use the pointer in tabpage_T.
Files: src/popupwin.c, src/globals.h, src/eval.c, src/screen.c,
src/window.c


*** ../vim-8.1.1399/src/popupwin.c 2019-05-26 14:10:59.909979018 +0200
--- src/popupwin.c 2019-05-26 18:35:27.278514988 +0200
***************
*** 85,92 ****
if (nr == 0)
{
// popup on current tab
! wp->w_next = first_tab_popupwin;
! first_tab_popupwin = wp;
}
else if (nr < 0)
{
--- 85,92 ----
if (nr == 0)
{
// popup on current tab
! wp->w_next = curtab->tp_first_popupwin;
! curtab->tp_first_popupwin = wp;
}
else if (nr < 0)
{
***************
*** 212,224 ****
popup_close_tabpage(tabpage_T *tp, int id)
{
win_T *wp;
! win_T **root;
win_T *prev = NULL;

- if (tp == curtab)
- root = &first_tab_popupwin;
- else
- root = &tp->tp_first_popupwin;
for (wp = *root; wp != NULL; prev = wp, wp = wp->w_next)
if (wp->w_id == id)
{
--- 212,220 ----
popup_close_tabpage(tabpage_T *tp, int id)
{
win_T *wp;
! win_T **root = &tp->tp_first_popupwin;
win_T *prev = NULL;

for (wp = *root; wp != NULL; prev = wp, wp = wp->w_next)
if (wp->w_id == id)
{
***************
*** 237,244 ****
{
while (first_popupwin != NULL)
popup_close(first_popupwin->w_id);
! while (first_tab_popupwin != NULL)
! popup_close(first_tab_popupwin->w_id);
}

void
--- 233,240 ----
{
while (first_popupwin != NULL)
popup_close(first_popupwin->w_id);
! while (curtab->tp_first_popupwin != NULL)
! popup_close(curtab->tp_first_popupwin->w_id);
}

void
*** ../vim-8.1.1399/src/globals.h 2019-05-25 19:51:03.776408456 +0200
--- src/globals.h 2019-05-26 18:40:51.312802393 +0200
***************
*** 582,588 ****
EXTERN int aucmd_win_used INIT(= FALSE); /* aucmd_win is being used */

#ifdef FEAT_TEXT_PROP
- EXTERN win_T *first_tab_popupwin; // first popup window local to tab page
EXTERN win_T *first_popupwin; // first global popup window
#endif

--- 582,587 ----
*** ../vim-8.1.1399/src/eval.c 2019-05-25 19:51:03.776408456 +0200
--- src/eval.c 2019-05-26 18:37:25.693888227 +0200
***************
*** 5589,5600 ****
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)
abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
NULL, NULL);
#endif
--- 5589,5596 ----
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_ALL_TABPAGES(tp)
! 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,8827 ****
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)
if (wp->w_id == nr)
return wp;
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
--- 8812,8822 ----
if (nr >= LOWEST_WIN_ID)
{
#ifdef FEAT_TEXT_PROP
! // 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;
*** ../vim-8.1.1399/src/screen.c 2019-05-25 22:56:46.679669071 +0200
--- src/screen.c 2019-05-26 18:38:53.905422054 +0200
***************
*** 610,616 ****
}
#ifdef FEAT_TEXT_PROP
// TODO: avoid redrawing everything when there is a popup window.
! if (first_popupwin != NULL || first_tab_popupwin != NULL)
type = NOT_VALID;
#endif

--- 610,616 ----
}
#ifdef FEAT_TEXT_PROP
// TODO: avoid redrawing everything when there is a popup window.
! if (first_popupwin != NULL || curtab->tp_first_popupwin != NULL)
type = NOT_VALID;
#endif

***************
*** 1000,1006 ****
// Reset all the VALID_POPUP flags.
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
wp->w_valid &= ~VALID_POPUP;
! for (wp = first_tab_popupwin; wp != NULL; wp = wp->w_next)
wp->w_valid &= ~VALID_POPUP;

// TODO: don't redraw every popup every time.
--- 1000,1006 ----
// Reset all the VALID_POPUP flags.
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
wp->w_valid &= ~VALID_POPUP;
! for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
wp->w_valid &= ~VALID_POPUP;

// TODO: don't redraw every popup every time.
***************
*** 1018,1024 ****
lowest_zindex = wp->w_zindex;
lowest_wp = wp;
}
! for (wp = first_tab_popupwin; wp != NULL; wp = wp->w_next)
if ((wp->w_valid & VALID_POPUP) == 0
&& wp->w_zindex < lowest_zindex)
{
--- 1018,1024 ----
lowest_zindex = wp->w_zindex;
lowest_wp = wp;
}
! for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
if ((wp->w_valid & VALID_POPUP) == 0
&& wp->w_zindex < lowest_zindex)
{
*** ../vim-8.1.1399/src/window.c 2019-05-26 14:10:59.909979018 +0200
--- src/window.c 2019-05-26 18:40:46.224829227 +0200
***************
*** 1371,1377 ****
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp == win)
return TRUE;
! for (wp = first_tab_popupwin; wp != NULL; wp = wp->w_next)
if (wp == win)
return TRUE;
#endif
--- 1371,1377 ----
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp == win)
return TRUE;
! for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
if (wp == win)
return TRUE;
#endif
***************
*** 3673,3685 ****
{
win_T *wp;

! for (;;)
! {
! wp = tp == curtab ? first_tab_popupwin : tp->tp_first_popupwin;
! if (wp == NULL)
! break;
! popup_close_tabpage(tp, wp->w_id);
! }
}
#endif
for (idx = 0; idx < SNAP_COUNT; ++idx)
--- 3673,3680 ----
{
win_T *wp;

! while (tp->tp_first_popupwin != NULL)
! popup_close_tabpage(tp, tp->tp_first_popupwin->w_id);
}
#endif
for (idx = 0; idx < SNAP_COUNT; ++idx)
***************
*** 3973,3982 ****
tp->tp_prevwin = prevwin;
tp->tp_firstwin = firstwin;
tp->tp_lastwin = lastwin;
- #ifdef FEAT_TEXT_PROP
- tp->tp_first_popupwin = first_tab_popupwin;
- first_tab_popupwin = NULL;
- #endif
tp->tp_old_Rows = Rows;
tp->tp_old_Columns = Columns;
firstwin = NULL;
--- 3968,3973 ----
***************
*** 4004,4012 ****
firstwin = tp->tp_firstwin;
lastwin = tp->tp_lastwin;
topframe = tp->tp_topframe;
- #ifdef FEAT_TEXT_PROP
- first_tab_popupwin = tp->tp_first_popupwin;
- #endif

/* We would like doing the TabEnter event first, but we don't have a
* valid current window yet, which may break some commands.
--- 3995,4000 ----
***************
*** 6513,6527 ****
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
- #ifdef FEAT_TEXT_PROP
- curtab->tp_first_popupwin = first_tab_popupwin ;
- #endif
curtab = tp;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
- #ifdef FEAT_TEXT_PROP
- first_tab_popupwin = curtab->tp_first_popupwin;
- #endif
}
else
goto_tabpage_tp(tp, FALSE, FALSE);
--- 6501,6509 ----
***************
*** 6550,6564 ****
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
- #ifdef FEAT_TEXT_PROP
- curtab->tp_first_popupwin = first_tab_popupwin ;
- #endif
curtab = save_curtab;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
- #ifdef FEAT_TEXT_PROP
- first_tab_popupwin = curtab->tp_first_popupwin;
- #endif
}
else
goto_tabpage_tp(save_curtab, FALSE, FALSE);
--- 6532,6540 ----
*** ../vim-8.1.1399/src/version.c 2019-05-26 14:10:59.909979018 +0200
--- src/version.c 2019-05-26 18:47:58.438593632 +0200
***************
*** 769,770 ****
--- 769,772 ----
{ /* Add new patch number below this line */
+ /**/
+ 1400,
/**/

--
hundred-and-one symptoms of being an internet addict:
30. Even though you died last week, you've managed to retain OPS on your
favorite IRC channel.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages