patch 9.0.2177: Wrong cursor position when dragging out of window
Commit:
https://github.com/vim/vim/commit/ec14924368e23f2430815c009bd554f88de9c57f
Author: zeertzjq <[email protected]>
Date: Tue Dec 19 20:28:31 2023 +0100
patch 9.0.2177: Wrong cursor position when dragging out of window
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 <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/mouse.c b/src/mouse.c
index f895779ac..b283c6479 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -2050,7 +2050,9 @@ retnomove:
}
}
- 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;
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 290641e1d..401a3504a 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index e65c2310c..b8dfc98a2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2177,
/**/
2176,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1rFfn7-003aNB-5E%40256bit.org.