diff --git a/src/evalwindow.c b/src/evalwindow.c index 613df0f251..9e90dffc7f 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -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); diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index 0ee6e89108..955cc2c9d6 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -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 diff --git a/src/version.c b/src/version.c index 0a90f015c2..1509b97284 100644 --- a/src/version.c +++ b/src/version.c @@ -724,6 +724,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1696, /**/ 1695, /**/