diff --git a/src/terminal.c b/src/terminal.c index 644cddab72..9729eac8f8 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -2207,10 +2207,8 @@ position_cursor(win_T *wp, VTermPos *pos) #ifdef FEAT_PROP_POPUP if (popup_is_popup(wp)) { - if ((wp->w_flags & WFLAG_WROW_OFF_ADDED) == 0) - wp->w_wrow += popup_top_extra(wp); - if ((wp->w_flags & WFLAG_WCOL_OFF_ADDED) == 0) - wp->w_wcol += popup_left_extra(wp); + wp->w_wrow += popup_top_extra(wp); + wp->w_wcol += popup_left_extra(wp); wp->w_flags |= WFLAG_WCOL_OFF_ADDED | WFLAG_WROW_OFF_ADDED; } else diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index 45e35030d4..42542a35c3 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -2662,10 +2662,18 @@ func Test_popupwin_terminal_buffer() help let termbuf = term_start(&shell, #{hidden: 1}) - let winid = popup_create(termbuf, #{minwidth: 40, minheight: 10}) - " Wait for shell to start + let winid = popup_create(termbuf, #{minwidth: 40, minheight: 10, border: []}) + " Wait for shell to start and show a prompt call WaitForAssert({-> assert_equal("run", job_status(term_getjob(termbuf)))}) - sleep 100m + sleep 20m + + " When typing a character, the cursor is after it. + call feedkeys("x", 'xt') + sleep 10m + redraw + call WaitForAssert({ -> assert_equal('x', screenstring(screenrow(), screencol() - 1))}) + call feedkeys("\", 'xt') + " Check this doesn't crash call assert_equal(winnr(), winnr('j')) call assert_equal(winnr(), winnr('k')) diff --git a/src/version.c b/src/version.c index b94f0df800..e92d754cf4 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2067, /**/ 2066, /**/