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
@ -564,8 +564,9 @@ f_getwininfo(typval_T *argvars, typval_T *rettv)
|
|||||||
tabnr++;
|
tabnr++;
|
||||||
FOR_ALL_POPUPWINS_IN_TAB(tp, wp)
|
FOR_ALL_POPUPWINS_IN_TAB(tp, wp)
|
||||||
if (wp == wparg)
|
if (wp == wparg)
|
||||||
break;
|
goto found;
|
||||||
}
|
}
|
||||||
|
found:
|
||||||
d = get_win_info(wparg, tp == NULL ? 0 : tabnr, 0);
|
d = get_win_info(wparg, tp == NULL ? 0 : tabnr, 0);
|
||||||
if (d != NULL)
|
if (d != NULL)
|
||||||
list_append_dict(rettv->vval.v_list, d);
|
list_append_dict(rettv->vval.v_list, d);
|
||||||
|
|||||||
@ -4619,4 +4619,19 @@ func Test_popupwin_bottom_position_without_decoration()
|
|||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2
|
||||||
|
|||||||
@ -724,6 +724,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 */
|
||||||
|
/**/
|
||||||
|
1696,
|
||||||
/**/
|
/**/
|
||||||
1695,
|
1695,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user