1
0
forked from aniani/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.
This commit is contained in:
Bram Moolenaar
2020-11-28 21:56:06 +01:00
parent ce2c5444e2
commit f5452691ba
3 changed files with 15 additions and 7 deletions

View File

@@ -2207,9 +2207,7 @@ position_cursor(win_T *wp, VTermPos *pos)
#ifdef FEAT_PROP_POPUP #ifdef FEAT_PROP_POPUP
if (popup_is_popup(wp)) if (popup_is_popup(wp))
{ {
if ((wp->w_flags & WFLAG_WROW_OFF_ADDED) == 0)
wp->w_wrow += popup_top_extra(wp); 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_wcol += popup_left_extra(wp);
wp->w_flags |= WFLAG_WCOL_OFF_ADDED | WFLAG_WROW_OFF_ADDED; wp->w_flags |= WFLAG_WCOL_OFF_ADDED | WFLAG_WROW_OFF_ADDED;
} }

View File

@@ -2662,10 +2662,18 @@ func Test_popupwin_terminal_buffer()
help help
let termbuf = term_start(&shell, #{hidden: 1}) let termbuf = term_start(&shell, #{hidden: 1})
let winid = popup_create(termbuf, #{minwidth: 40, minheight: 10}) let winid = popup_create(termbuf, #{minwidth: 40, minheight: 10, border: []})
" Wait for shell to start " Wait for shell to start and show a prompt
call WaitForAssert({-> assert_equal("run", job_status(term_getjob(termbuf)))}) 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 " Check this doesn't crash
call assert_equal(winnr(), winnr('j')) call assert_equal(winnr(), winnr('j'))
call assert_equal(winnr(), winnr('k')) call assert_equal(winnr(), winnr('k'))

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2067,
/**/ /**/
2066, 2066,
/**/ /**/