patch 9.1.1696: tabnr from getwininfo() for popup windows is always 0
Problem: getwininfo() has logic for getting the tabnr of a local popup
window, but due to only breaking from the inner loop, tp is
eventually set to NULL, so tabnr is always 0.
Solution: Break out of both loops, continue to use 0 for global popup
windows (Sean Dewar).
closes: #18111
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
477c893c0a
commit
7d6be2cead
@ -563,9 +563,10 @@ f_getwininfo(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
tabnr++;
|
||||
FOR_ALL_POPUPWINS_IN_TAB(tp, wp)
|
||||
if (wp == wparg)
|
||||
break;
|
||||
if (wp == wparg)
|
||||
goto found;
|
||||
}
|
||||
found:
|
||||
d = get_win_info(wparg, tp == NULL ? 0 : tabnr, 0);
|
||||
if (d != NULL)
|
||||
list_append_dict(rettv->vval.v_list, d);
|
||||
|
||||
@ -4619,4 +4619,19 @@ func Test_popupwin_bottom_position_without_decoration()
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_popup_getwininfo_tabnr()
|
||||
tab split
|
||||
let winid1 = popup_create('sup', #{tabpage: 1})
|
||||
let winid2 = popup_create('sup', {})
|
||||
let winid3 = popup_create('sup', #{tabpage: -1})
|
||||
call assert_equal(1, getwininfo(winid1)[0].tabnr)
|
||||
call assert_equal(2, getwininfo(winid2)[0].tabnr)
|
||||
call assert_equal(0, getwininfo(winid3)[0].tabnr)
|
||||
|
||||
call popup_close(winid1)
|
||||
call popup_close(winid2)
|
||||
call popup_close(winid3)
|
||||
tabonly
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2
|
||||
|
||||
@ -724,6 +724,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1696,
|
||||
/**/
|
||||
1695,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user