Skip to content

Commit

Permalink
patch 9.0.2177: Wrong cursor position when dragging out of window
Browse files Browse the repository at this point in the history
Problem:  Wrong cursor position when dragging out of window.
Solution: Don't use ScreenCols[] when mouse is not in current window.

closes: #13717

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
  • Loading branch information
zeertzjq authored and chrisbra committed Dec 19, 2023
1 parent f01bee1 commit ec14924
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/mouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -2050,7 +2050,9 @@ jump_to_mouse(
}
}

if (prev_row >= 0 && prev_row < Rows && prev_col >= 0 && prev_col <= Columns
if (prev_row >= W_WINROW(curwin)
&& prev_row < W_WINROW(curwin) + curwin->w_height
&& prev_col >= curwin->w_wincol && prev_col < W_ENDCOL(curwin)
&& ScreenLines != NULL)
{
int off = LineOffset[prev_row] + prev_col;
Expand Down
37 changes: 36 additions & 1 deletion src/testdir/test_visual.vim
Original file line number Diff line number Diff line change
Expand Up @@ -1585,6 +1585,41 @@ func Test_Visual_r_CTRL_C()
call feedkeys("\<c-v>$gr\<c-c>", 'tx')
call assert_equal([''], getline(1, 1))
bw!
endfu
endfunc

func Test_visual_drag_out_of_window()
rightbelow vnew
call setline(1, '123456789')
set mouse=a
func ClickExpr(off)
call test_setmouse(1, getwininfo(win_getid())[0].wincol + a:off)
return "\<LeftMouse>"
endfunc
func DragExpr(off)
call test_setmouse(1, getwininfo(win_getid())[0].wincol + a:off)
return "\<LeftDrag>"
endfunc

nnoremap <expr> <F2> ClickExpr(5)
nnoremap <expr> <F3> DragExpr(-1)
redraw
call feedkeys("\<F2>\<F3>\<LeftRelease>", 'tx')
call assert_equal([1, 6], [col('.'), col('v')])
call feedkeys("\<Esc>", 'tx')

nnoremap <expr> <F2> ClickExpr(6)
nnoremap <expr> <F3> DragExpr(-2)
redraw
call feedkeys("\<F2>\<F3>\<LeftRelease>", 'tx')
call assert_equal([1, 7], [col('.'), col('v')])
call feedkeys("\<Esc>", 'tx')

nunmap <F2>
nunmap <F3>
delfunc ClickExpr
delfunc DragExpr
set mouse&
bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2177,
/**/
2176,
/**/
Expand Down

0 comments on commit ec14924

Please sign in to comment.