Avoid errors in posn-at-point for large images

* src/keyboard.c (Fposn_at_point): If pos-visible-in-window-p
returns a 6-member list for a partially visible glyph, pass the
sum of Y and RTOP to posn-at-x-y, since that's where the visible
portion of that glyph begins on display.  (Bug#24804)  (Bug#21832)
(Bug#23809)
This commit is contained in:
Eli Zaretskii 2016-10-29 17:39:54 +03:00
parent aaa3a93e50
commit 966b73b316

View file

@ -10790,11 +10790,19 @@ The `posn-' functions access elements of such lists. */)
{
Lisp_Object x = XCAR (tem);
Lisp_Object y = XCAR (XCDR (tem));
Lisp_Object aux_info = XCDR (XCDR (tem));
int y_coord = XINT (y);
/* Point invisible due to hscrolling? X can be -1 when a
newline in a R2L line overflows into the left fringe. */
if (XINT (x) < -1)
return Qnil;
if (!NILP (aux_info) && y_coord < 0)
{
int rtop = XINT (XCAR (aux_info));
y = make_number (y_coord + rtop);
}
tem = Fposn_at_x_y (x, y, window, Qnil);
}