# HG changeset patch # User Bram Moolenaar # Date 1606597204 -3600 # Node ID 139573353c6d0ee5d39d5f7589d6b178ccaaf061 # Parent a549706c40247a6fb2fe8495f347d6ee0b0a52e7 patch 8.2.2067: cursor position in popup terminal is wrong Commit: https://github.com/vim/vim/commit/f5452691ba30e33b38c5b06c51ba40b58457d5d8 Author: Bram Moolenaar Date: Sat Nov 28 21:56:06 2020 +0100 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 --- 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2067, +/**/ 2066, /**/ 2065,