Fix text pos part of lispy positions for right fringe clicks (Bug#7839).
authorChong Yidong <cyd@stupidchicken.com>
Fri, 28 Jan 2011 20:30:38 +0000 (15:30 -0500)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 28 Jan 2011 20:30:38 +0000 (15:30 -0500)
* src/keyboard.c (make_lispy_position): For clicks on right fringe or
margin, compute text position using the X coordinate relative to
the left of the text area (Bug#7839).

src/ChangeLog
src/keyboard.c

index 5af18f3..e4eb78f 100644 (file)
@@ -1,3 +1,9 @@
+2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (make_lispy_position): For clicks on right fringe or
+       margin, compute text position using the X coordinate relative to
+       the left of the text area (Bug#7839).
+
 2011-01-28  Kenichi Handa  <handa@m17n.org>
 
        * ftfont.c (ftfont_spec_pattern): Check each extra property
index 8ae6eb9..7a5185d 100644 (file)
@@ -5153,8 +5153,12 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
          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 clicks, zero otherwise.  */
-         int x2 = (part == ON_TEXT) ? xret : 0;
+            text-area and right-margin clicks, zero otherwise.  */
+         int x2
+           = (part == ON_TEXT) ? x2
+           : (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN)
+           ? (XINT (x) - window_box_left (w, TEXT_AREA))
+           : 0;
          int y2 = wy;
 
          string2 = buffer_posn_from_coords (w, &x2, &y2, &p,