mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.0739: mouse column not correctly used for popup_setpos
Problem: Mouse column not correctly used for popup_setpos. Solution: Adjust off-by-one error and handle Visual line selection properly. (Yee Cheng Chin, closes #11356)
This commit is contained in:
committed by
Bram Moolenaar
parent
91ccbad5de
commit
17822c507c
20
src/mouse.c
20
src/mouse.c
@@ -141,7 +141,9 @@ find_end_of_word(pos_T *pos)
|
||||
# define NEED_VCOL2COL
|
||||
|
||||
/*
|
||||
* Translate window coordinates to buffer position without any side effects
|
||||
* Translate window coordinates to buffer position without any side effects.
|
||||
* Returns IN_BUFFER and sets "mpos->col" to the column when in buffer text.
|
||||
* The column is one for the first column.
|
||||
*/
|
||||
static int
|
||||
get_fpos_of_mouse(pos_T *mpos)
|
||||
@@ -172,8 +174,6 @@ get_fpos_of_mouse(pos_T *mpos)
|
||||
|
||||
mpos->col = vcol2col(wp, mpos->lnum, col);
|
||||
|
||||
if (mpos->col > 0)
|
||||
--mpos->col;
|
||||
mpos->coladd = 0;
|
||||
return IN_BUFFER;
|
||||
}
|
||||
@@ -598,7 +598,19 @@ do_mouse(
|
||||
jump_flags = MOUSE_MAY_STOP_VIS;
|
||||
else
|
||||
{
|
||||
if ((LT_POS(curwin->w_cursor, VIsual)
|
||||
if (VIsual_mode == 'V')
|
||||
{
|
||||
if ((curwin->w_cursor.lnum <= VIsual.lnum
|
||||
&& (m_pos.lnum < curwin->w_cursor.lnum
|
||||
|| VIsual.lnum < m_pos.lnum))
|
||||
|| (VIsual.lnum < curwin->w_cursor.lnum
|
||||
&& (m_pos.lnum < VIsual.lnum
|
||||
|| curwin->w_cursor.lnum < m_pos.lnum)))
|
||||
{
|
||||
jump_flags = MOUSE_MAY_STOP_VIS;
|
||||
}
|
||||
}
|
||||
else if ((LTOREQ_POS(curwin->w_cursor, VIsual)
|
||||
&& (LT_POS(m_pos, curwin->w_cursor)
|
||||
|| LT_POS(VIsual, m_pos)))
|
||||
|| (LT_POS(VIsual, curwin->w_cursor)
|
||||
|
Reference in New Issue
Block a user