diff options
Diffstat (limited to 'data/vim/patches/8.1.1400')
-rw-r--r-- | data/vim/patches/8.1.1400 | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1400 b/data/vim/patches/8.1.1400 new file mode 100644 index 000000000..030f03a2a --- /dev/null +++ b/data/vim/patches/8.1.1400 @@ -0,0 +1,320 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1400 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +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 -- Bram@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 /// |