From: Bram Moolenaar Date: Sat, 28 Nov 2020 20:56:06 +0000 (+0100) Subject: patch 8.2.2067: cursor position in popup terminal is wrong X-Git-Tag: v8.2.2067 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5452691ba30e33b38c5b06c51ba40b58457d5d8;p=vim patch 8.2.2067: cursor position in popup terminal is wrong Problem: Cursor position in popup terminal is wrong. Solution: Don't check the flags. --- diff --git a/src/terminal.c b/src/terminal.c index 644cddab7..9729eac8f 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 45e35030d..42542a35c 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 b94f0df80..e92d754cf 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, /**/