changeset 17075:dacd46fbaa90 v8.1.1537

patch 8.1.1537: using "tab" for popup window can be confusing commit https://github.com/vim/vim/commit/fc06cbbf8601a453b4a62a17558821add09f863f Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 15 14:14:31 2019 +0200 patch 8.1.1537: using "tab" for popup window can be confusing Problem: Using "tab" for popup window can be confusing. Solution: Use "tabpage". (Hirohito Higashi, closes https://github.com/vim/vim/issues/4532)
author Bram Moolenaar <Bram@vim.org>
date Sat, 15 Jun 2019 14:15:06 +0200
parents a86c4ae3192a
children edd03436c86d
files runtime/doc/popup.txt src/popupwin.c src/testdir/test_popupwin.vim src/version.c
diffstat 4 files changed, 30 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -40,11 +40,12 @@ The default color used is "Pmenu".  If y
 
 A popup window has a window-ID like other windows, but behaves differently.
 The size can be up to the whole Vim window and it overlaps other windows.
-Popup windows can also overlap each other.
+Popup windows can also overlap each other.  The "zindex" property specifies
+what goes on top of what.
 
 The popup window contains a buffer, and that buffer is always associated with
-the popup window.  The window cannot be used in Normal, Visual or Insert mode,
-it does not get keyboard focus.  You can use functions like `setbufline()` to
+the popup window.  The window cannot be in Normal, Visual or Insert mode, it
+does not get keyboard focus.  You can use functions like `setbufline()` to
 change the text in the buffer.  There are more differences from how this
 window and buffer behave compared to regular windows and buffers, see
 |popup-buffer|.
@@ -85,17 +86,16 @@ that it is in.
 
 
 
-IMPLEMENTATION:
+TODO:
 - Why does 'nrformats' leak from the popup window buffer???
 - Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
   Use NOT_IN_POPUP_WINDOW for more commands.
 - Add 'balloonpopup': instead of showing text, let the callback open a popup
   window and return the window ID.   The popup will then be closed when the
   mouse moves, except when it moves inside the popup.
+- For notifications use the PopupNotification highlight group, fall back to
+  WarningMsg if it isn't defined.
 - For the "moved" property also include mouse movement?
-- When selecting text in the popup with modeless selection, do not select
-  outside of the popup and don't select the border or padding.
-- Add test for dragging the popup window.
 - Make redrawing more efficient and avoid flicker:
     - put popup menu also put in popup_mask?
 - Invoke filter with character before mapping?
@@ -105,7 +105,17 @@ IMPLEMENTATION:
 - When drawing on top half a double-wide character, display ">" or "<" in the
   incomplete cell.
 - Can the buffer be re-used, to avoid using up lots of buffer numbers?
-- Implement all the unimplemented options and features.
+- Implement:
+	popup_dialog({text}, {options})
+	popup_filter_menu({id}, {key})
+	popup_filter_yesno({id}, {key})
+	popup_menu({text}, {options})
+	popup_setoptions({id}, {options})
+	flip option
+	hidden option
+	tabpage option with number
+	title option
+	transparent text property
 
 
 ==============================================================================
@@ -140,7 +150,7 @@ Other:
 	|popup_getpos()|	get actual position and size of a popup
 
 
-[functions to be moved to eval.txt later]
+[functions help to be moved to eval.txt later]
 
 popup_atcursor({text}, {options})			 *popup_atcursor()*
 		Show the {text} above the cursor, and close it when the cursor
@@ -291,7 +301,7 @@ popup_notification({text}, {options})			
 				\ 'line': 1,
 				\ 'col': 10,
 				\ 'time': 3000,
-				\ 'tab': -1,
+				\ 'tabpage': -1,
 				\ 'zindex': 200,
 				\ 'drag': 1,
 				\ 'highlight': 'WarningMsg',
@@ -402,11 +412,11 @@ The second argument of |popup_create()| 
 	hidden		When TRUE the popup exists but is not displayed; use
 			`popup_show()` to unhide it.
 			{not implemented yet}
-	tab		When -1: display the popup on all tabs.
+	tabpage		When -1: display the popup on all tabs.
 			When 0 (the default): display the popup on the current
-			tab.
+			tab page.
 			Otherwise the number of the tab page the popup is
-			displayed on; when invalid the current tab is used.
+			displayed on; when invalid the current tab page is used.
 			{only -1 and 0 are implemented}
 	title		Text to be displayed above the first item in the
 			popup, on top of any border.  If there is no top
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -748,8 +748,8 @@ popup_create(typval_T *argvars, typval_T
     // Avoid that 'buftype' is reset when this buffer is entered.
     buf->b_p_initialized = TRUE;
 
-    if (dict_find(d, (char_u *)"tab", -1) != NULL)
-	nr = (int)dict_get_number(d, (char_u *)"tab");
+    if (dict_find(d, (char_u *)"tabpage", -1) != NULL)
+	nr = (int)dict_get_number(d, (char_u *)"tabpage");
     else if (type == TYPE_NOTIFICATION)
 	nr = -1;  // notifications are global by default
     else
@@ -757,7 +757,7 @@ popup_create(typval_T *argvars, typval_T
 
     if (nr == 0)
     {
-	// popup on current tab
+	// popup on current tab page
 	wp->w_next = curtab->tp_first_popupwin;
 	curtab->tp_first_popupwin = wp;
     }
@@ -1228,7 +1228,7 @@ not_in_popup_window()
 
 /*
  * Reset all the POPF_HANDLED flags in global popup windows and popup windows
- * in the current tab.
+ * in the current tab page.
  */
     void
 popup_reset_handled()
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -372,7 +372,7 @@ func Test_popup_in_tab()
   call assert_equal(0, bufexists(bufnr))
 
   " global popup is visible in any tab
-  let winid = popup_create("text", {'tab': -1})
+  let winid = popup_create("text", {'tabpage': -1})
   call assert_equal(1, popup_getpos(winid).visible)
   tabnew
   call assert_equal(1, popup_getpos(winid).visible)
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1537,
+/**/
     1536,
 /**/
     1535,