]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid errors in posn-at-point for large images
authorEli Zaretskii <eliz@gnu.org>
Sat, 29 Oct 2016 14:39:54 +0000 (17:39 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 29 Oct 2016 14:39:54 +0000 (17:39 +0300)
* 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)

src/keyboard.c

index bb411e7782351a58def5e9a2d46d87165c8ddc41..65938a5eb56e610ca4249d7e68ca33760b10a9ed 100644 (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);
     }