summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-11-28 21:56:06 +0100
committerBram Moolenaar <Bram@vim.org>2020-11-28 21:56:06 +0100
commitf5452691ba30e33b38c5b06c51ba40b58457d5d8 (patch)
tree7cf03c30dda8de02049a1aa74c1b7f026cf096c7
parentce2c5444e2556d8d156ab447d6d196f9ecd11ddc (diff)
patch 8.2.2067: cursor position in popup terminal is wrongv8.2.2067
Problem: Cursor position in popup terminal is wrong. Solution: Don't check the flags.
-rw-r--r--src/terminal.c6
-rw-r--r--src/testdir/test_popupwin.vim14
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 7 deletions
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("\<BS>", '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
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2067,
+/**/
2066,
/**/
2065,