Fix region extension when scroll bar is on the right
src/keyboard.c (make_lispy_position): When the click is on the right-side vertical scroll bar, pass the rightmost X coordinate to buffer_posn_from_coords, so that the returned text position reflects the closest point to the click. Fixes region extension when mouse moves outside the Emacs frame that has scroll bars on the right.
This commit is contained in:
parent
61e06b6cb2
commit
1be3bd0ad8
2 changed files with 18 additions and 6 deletions
|
@ -1,3 +1,12 @@
|
|||
2015-03-05 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* keyboard.c (make_lispy_position): When the click is on the
|
||||
right-side vertical scroll bar, pass the rightmost X coordinate to
|
||||
buffer_posn_from_coords, so that the returned text position
|
||||
reflects the closest point to the click. Fixes region extension
|
||||
when mouse moves outside the Emacs frame that has scroll bars on
|
||||
the right.
|
||||
|
||||
2015-03-04 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* frame.c (x_set_font): Try to keep frame height and width
|
||||
|
|
|
@ -5360,9 +5360,9 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
dy = yret = wy;
|
||||
}
|
||||
|
||||
/* For clicks in the text area, fringes, or margins, call
|
||||
buffer_posn_from_coords to extract TEXTPOS, the buffer
|
||||
position nearest to the click. */
|
||||
/* For clicks in the text area, fringes, margins, or vertical
|
||||
scroll bar, call buffer_posn_from_coords to extract TEXTPOS,
|
||||
the buffer position nearest to the click. */
|
||||
if (!textpos)
|
||||
{
|
||||
Lisp_Object string2, object2 = Qnil;
|
||||
|
@ -5370,11 +5370,14 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
int dx2, dy2;
|
||||
int width2, height2;
|
||||
/* The pixel X coordinate passed to buffer_posn_from_coords
|
||||
is the X coordinate relative to the text area for
|
||||
text-area and right-margin clicks, zero otherwise. */
|
||||
is the X coordinate relative to the text area for clicks
|
||||
in text-area, right-margin/fringe and right-side vertical
|
||||
scroll bar, zero otherwise. */
|
||||
int x2
|
||||
= (part == ON_TEXT) ? xret
|
||||
: (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN)
|
||||
: (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN
|
||||
|| (part == ON_VERTICAL_SCROLL_BAR
|
||||
&& WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)))
|
||||
? (XINT (x) - window_box_left (w, TEXT_AREA))
|
||||
: 0;
|
||||
int y2 = wy;
|
||||
|
|
Loading…
Add table
Reference in a new issue