summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1399
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1399')
-rw-r--r--data/vim/patches/8.1.1399323
1 files changed, 323 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1399 b/data/vim/patches/8.1.1399
new file mode 100644
index 000000000..a4980b698
--- /dev/null
+++ b/data/vim/patches/8.1.1399
@@ -0,0 +1,323 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1399
+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.1399
+Problem: Popup windows not adjusted when switching tabs.
+Solution: Save and restore first_tab_popupwin. Fix closing a tabpage.
+Files: src/window.c, src/popupwin.c, src/proto/popupwin.pro,
+ src/testdir/test_popupwin.vim,
+ src/testdir/dumps/Test_popupwin_02.dump,
+ src/testdir/dumps/Test_popupwin_03.dump,
+ src/testdir/dumps/Test_popupwin_04.dump
+
+
+*** ../vim-8.1.1398/src/window.c 2019-05-25 20:10:32.837684661 +0200
+--- src/window.c 2019-05-26 14:02:01.612768844 +0200
+***************
+*** 3670,3677 ****
+ diff_clear(tp);
+ # endif
+ # ifdef FEAT_TEXT_PROP
+! while (tp->tp_first_popupwin != NULL)
+! popup_close(tp->tp_first_popupwin->w_id);
+ #endif
+ for (idx = 0; idx < SNAP_COUNT; ++idx)
+ clear_snapshot(tp, idx);
+--- 3670,3686 ----
+ diff_clear(tp);
+ # endif
+ # ifdef FEAT_TEXT_PROP
+! {
+! 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)
+ clear_snapshot(tp, idx);
+***************
+*** 3964,3969 ****
+--- 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;
+***************
+*** 3991,3996 ****
+--- 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.
+***************
+*** 6497,6505 ****
+--- 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);
+***************
+*** 6528,6536 ****
+--- 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);
+*** ../vim-8.1.1398/src/popupwin.c 2019-05-25 19:51:03.776408456 +0200
+--- src/popupwin.c 2019-05-26 13:56:33.486438052 +0200
+***************
+*** 177,216 ****
+ popup_close(nr);
+ }
+
+ void
+! popup_close(int nr)
+ {
+ win_T *wp;
+ win_T *prev = NULL;
+
+ for (wp = first_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
+! if (wp->w_id == nr)
+ {
+ if (prev == NULL)
+ first_popupwin = wp->w_next;
+ else
+ prev->w_next = wp->w_next;
+! break;
+ }
+
+! if (wp == NULL)
+! {
+! prev = NULL;
+! for (wp = first_tab_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
+! if (wp->w_id == nr)
+! {
+! if (prev == NULL)
+! first_tab_popupwin = wp->w_next;
+! else
+! prev->w_next = wp->w_next;
+! break;
+! }
+! }
+! if (wp != NULL)
+! {
+! win_free_popup(wp);
+! redraw_all_later(NOT_VALID);
+! }
+ }
+
+ void
+--- 177,235 ----
+ popup_close(nr);
+ }
+
++ /*
++ * Close a popup window by Window-id.
++ */
+ void
+! popup_close(int id)
+ {
+ win_T *wp;
++ tabpage_T *tp;
+ win_T *prev = NULL;
+
++ // go through global popups
+ for (wp = first_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
+! if (wp->w_id == id)
+ {
+ if (prev == NULL)
+ first_popupwin = wp->w_next;
+ else
+ prev->w_next = wp->w_next;
+! win_free_popup(wp);
+! redraw_all_later(NOT_VALID);
+! return;
+ }
+
+! // go through tab-local popups
+! FOR_ALL_TABPAGES(tp)
+! popup_close_tabpage(tp, id);
+! }
+!
+! /*
+! * Close a popup window with Window-id "id" in tabpage "tp".
+! */
+! void
+! 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)
+! {
+! if (prev == NULL)
+! *root = wp->w_next;
+! else
+! prev->w_next = wp->w_next;
+! win_free_popup(wp);
+! redraw_all_later(NOT_VALID);
+! return;
+! }
+ }
+
+ void
+*** ../vim-8.1.1398/src/proto/popupwin.pro 2019-05-25 19:51:03.776408456 +0200
+--- src/proto/popupwin.pro 2019-05-26 13:56:23.998485715 +0200
+***************
+*** 1,7 ****
+ /* popupwin.c */
+ void f_popup_create(typval_T *argvars, typval_T *rettv);
+ void f_popup_close(typval_T *argvars, typval_T *rettv);
+! void popup_close(int nr);
+ void close_all_popups(void);
+ void ex_popupclear(exarg_T *eap);
+ /* vim: set ft=c : */
+--- 1,8 ----
+ /* popupwin.c */
+ void f_popup_create(typval_T *argvars, typval_T *rettv);
+ void f_popup_close(typval_T *argvars, typval_T *rettv);
+! void popup_close(int id);
+! void popup_close_tabpage(tabpage_T *tp, int id);
+ void close_all_popups(void);
+ void ex_popupclear(exarg_T *eap);
+ /* vim: set ft=c : */
+*** ../vim-8.1.1398/src/testdir/test_popupwin.vim 2019-05-25 19:51:03.780408437 +0200
+--- src/testdir/test_popupwin.vim 2019-05-26 14:07:44.274997632 +0200
+***************
+*** 20,25 ****
+--- 20,38 ----
+ let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10})
+ call VerifyScreenDump(buf, 'Test_popupwin_01', {})
+
++ " Add a tabpage
++ call term_sendkeys(buf, ":tabnew\<CR>")
++ call term_sendkeys(buf, ":call popup_create('other tab', {'line': 4, 'col': 9})\<CR>")
++ call VerifyScreenDump(buf, 'Test_popupwin_02', {})
++
++ " switch back to first tabpage
++ call term_sendkeys(buf, "gt")
++ call VerifyScreenDump(buf, 'Test_popupwin_03', {})
++
++ " close that tabpage
++ call term_sendkeys(buf, ":quit!\<CR>")
++ call VerifyScreenDump(buf, 'Test_popupwin_04', {})
++
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('XtestPopup')
+*** ../vim-8.1.1398/src/testdir/dumps/Test_popupwin_02.dump 2019-05-26 14:10:49.566032964 +0200
+--- src/testdir/dumps/Test_popupwin_02.dump 2019-05-26 14:07:52.562954582 +0200
+***************
+*** 0 ****
+--- 1,10 ----
++ | +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08
++ > +0#0000000#ffffff0@74
++ |~+0#4040ff13&| @73
++ |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46
++ |~| @73
++ |~| @73
++ |~| @73
++ |~| @73
++ |~| @73
++ |:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|c|r|e|a|t|e|(|'|o|t|h|e|r| |t|a|b|'|,| |{|'|l|i|n|e|'|:| |4|,| |'|c|o|l|'|:| |9|}|)| @2|0|,|0|-|1| @8|A|l@1|
+*** ../vim-8.1.1398/src/testdir/dumps/Test_popupwin_03.dump 2019-05-26 14:10:49.570032943 +0200
+--- src/testdir/dumps/Test_popupwin_03.dump 2019-05-26 14:07:53.614949115 +0200
+***************
+*** 0 ****
+--- 1,10 ----
++ | +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +1#0000000#ffffff0@49|X+8#0000001#e0e0e08
++ >1+0#0000000#ffffff0| @73
++ |2| @8|h+0&#5fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0#0000001#ffd7ff255| |o|n|e| @8| +0#0000000#ffffff0@30
++ |3| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|w|o| @8| +0#0000000#ffffff0@30
++ |4| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0#0000000#ffffff0@30
++ |5| @73
++ |6| @73
++ |7| @73
++ |8| @73
++ |:|c|a|l@1| |p|o|p|u|p|_|c|r|e|a|t|e|(|'|o|t|h|e|r| |t|a|b|'|,| |{|'|l|i|n|e|'|:| |4|,| |'|c|o| @9|1|,|1| @10|T|o|p|
+*** ../vim-8.1.1398/src/testdir/dumps/Test_popupwin_04.dump 2019-05-26 14:10:49.574032921 +0200
+--- src/testdir/dumps/Test_popupwin_04.dump 2019-05-26 14:07:54.666943646 +0200
+***************
+*** 0 ****
+--- 1,10 ----
++ > +0&#ffffff0@74
++ |~+0#4040ff13&| @73
++ |~| @73
++ |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46
++ |~| @73
++ |~| @73
++ |~| @73
++ |~| @73
++ |~| @73
++ |:+0#0000000&|q|u|i|t|!| @50|0|,|0|-|1| @8|A|l@1|
+*** ../vim-8.1.1398/src/version.c 2019-05-26 13:13:59.243216016 +0200
+--- src/version.c 2019-05-26 13:22:38.660500164 +0200
+***************
+*** 769,770 ****
+--- 769,772 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1399,
+ /**/
+
+--
+Give a man a computer program and you give him a headache,
+but teach him to program computers and you give him the power
+to create headaches for others for the rest of his life...
+ R. B. Forest
+
+ /// 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 ///