forked from aniani/vim
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 #4532)
This commit is contained in:
parent
1755ec4278
commit
fc06cbbf86
@ -40,11 +40,12 @@ The default color used is "Pmenu". If you prefer something else use the
|
|||||||
|
|
||||||
A popup window has a window-ID like other windows, but behaves differently.
|
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.
|
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 contains a buffer, and that buffer is always associated with
|
||||||
the popup window. The window cannot be used in Normal, Visual or Insert mode,
|
the popup window. The window cannot be in Normal, Visual or Insert mode, it
|
||||||
it does not get keyboard focus. You can use functions like `setbufline()` to
|
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
|
change the text in the buffer. There are more differences from how this
|
||||||
window and buffer behave compared to regular windows and buffers, see
|
window and buffer behave compared to regular windows and buffers, see
|
||||||
|popup-buffer|.
|
|popup-buffer|.
|
||||||
@ -85,17 +86,16 @@ that it is in.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENTATION:
|
TODO:
|
||||||
- Why does 'nrformats' leak from the popup window buffer???
|
- Why does 'nrformats' leak from the popup window buffer???
|
||||||
- Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
|
- Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
|
||||||
Use NOT_IN_POPUP_WINDOW for more commands.
|
Use NOT_IN_POPUP_WINDOW for more commands.
|
||||||
- Add 'balloonpopup': instead of showing text, let the callback open a popup
|
- 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
|
window and return the window ID. The popup will then be closed when the
|
||||||
mouse moves, except when it moves inside the popup.
|
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?
|
- 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:
|
- Make redrawing more efficient and avoid flicker:
|
||||||
- put popup menu also put in popup_mask?
|
- put popup menu also put in popup_mask?
|
||||||
- Invoke filter with character before mapping?
|
- Invoke filter with character before mapping?
|
||||||
@ -105,7 +105,17 @@ IMPLEMENTATION:
|
|||||||
- When drawing on top half a double-wide character, display ">" or "<" in the
|
- When drawing on top half a double-wide character, display ">" or "<" in the
|
||||||
incomplete cell.
|
incomplete cell.
|
||||||
- Can the buffer be re-used, to avoid using up lots of buffer numbers?
|
- 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
|
|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()*
|
popup_atcursor({text}, {options}) *popup_atcursor()*
|
||||||
Show the {text} above the cursor, and close it when the cursor
|
Show the {text} above the cursor, and close it when the cursor
|
||||||
@ -291,7 +301,7 @@ popup_notification({text}, {options}) *popup_notification()*
|
|||||||
\ 'line': 1,
|
\ 'line': 1,
|
||||||
\ 'col': 10,
|
\ 'col': 10,
|
||||||
\ 'time': 3000,
|
\ 'time': 3000,
|
||||||
\ 'tab': -1,
|
\ 'tabpage': -1,
|
||||||
\ 'zindex': 200,
|
\ 'zindex': 200,
|
||||||
\ 'drag': 1,
|
\ 'drag': 1,
|
||||||
\ 'highlight': 'WarningMsg',
|
\ 'highlight': 'WarningMsg',
|
||||||
@ -402,11 +412,11 @@ The second argument of |popup_create()| is a dictionary with options:
|
|||||||
hidden When TRUE the popup exists but is not displayed; use
|
hidden When TRUE the popup exists but is not displayed; use
|
||||||
`popup_show()` to unhide it.
|
`popup_show()` to unhide it.
|
||||||
{not implemented yet}
|
{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
|
When 0 (the default): display the popup on the current
|
||||||
tab.
|
tab page.
|
||||||
Otherwise the number of the tab page the popup is
|
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}
|
{only -1 and 0 are implemented}
|
||||||
title Text to be displayed above the first item in the
|
title Text to be displayed above the first item in the
|
||||||
popup, on top of any border. If there is no top
|
popup, on top of any border. If there is no top
|
||||||
|
@ -748,8 +748,8 @@ popup_create(typval_T *argvars, typval_T *rettv, create_type_T type)
|
|||||||
// Avoid that 'buftype' is reset when this buffer is entered.
|
// Avoid that 'buftype' is reset when this buffer is entered.
|
||||||
buf->b_p_initialized = TRUE;
|
buf->b_p_initialized = TRUE;
|
||||||
|
|
||||||
if (dict_find(d, (char_u *)"tab", -1) != NULL)
|
if (dict_find(d, (char_u *)"tabpage", -1) != NULL)
|
||||||
nr = (int)dict_get_number(d, (char_u *)"tab");
|
nr = (int)dict_get_number(d, (char_u *)"tabpage");
|
||||||
else if (type == TYPE_NOTIFICATION)
|
else if (type == TYPE_NOTIFICATION)
|
||||||
nr = -1; // notifications are global by default
|
nr = -1; // notifications are global by default
|
||||||
else
|
else
|
||||||
@ -757,7 +757,7 @@ popup_create(typval_T *argvars, typval_T *rettv, create_type_T type)
|
|||||||
|
|
||||||
if (nr == 0)
|
if (nr == 0)
|
||||||
{
|
{
|
||||||
// popup on current tab
|
// popup on current tab page
|
||||||
wp->w_next = curtab->tp_first_popupwin;
|
wp->w_next = curtab->tp_first_popupwin;
|
||||||
curtab->tp_first_popupwin = wp;
|
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
|
* Reset all the POPF_HANDLED flags in global popup windows and popup windows
|
||||||
* in the current tab.
|
* in the current tab page.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
popup_reset_handled()
|
popup_reset_handled()
|
||||||
|
@ -372,7 +372,7 @@ func Test_popup_in_tab()
|
|||||||
call assert_equal(0, bufexists(bufnr))
|
call assert_equal(0, bufexists(bufnr))
|
||||||
|
|
||||||
" global popup is visible in any tab
|
" 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)
|
call assert_equal(1, popup_getpos(winid).visible)
|
||||||
tabnew
|
tabnew
|
||||||
call assert_equal(1, popup_getpos(winid).visible)
|
call assert_equal(1, popup_getpos(winid).visible)
|
||||||
|
@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1537,
|
||||||
/**/
|
/**/
|
||||||
1536,
|
1536,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user