]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #18277 with mouse clicks on R2L lines.
authorEli Zaretskii <eliz@gnu.org>
Sun, 17 Aug 2014 14:34:05 +0000 (17:34 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 17 Aug 2014 14:34:05 +0000 (17:34 +0300)
 src/dispnew.c (buffer_posn_from_coords): Fix mirroring of X
 coordinate for hscrolled R2L screen lines.

src/ChangeLog
src/dispnew.c

index 628fa26d778cbfffdb7234975be8627ed93a9cec..68f6babb991b3a58bb14b456acd04fde16411e34 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * dispnew.c (buffer_posn_from_coords): Fix mirroring of X
+       coordinate for hscrolled R2L screen lines.  (Bug#18277)
+
 2014-08-11  Ken Brown  <kbrown@cornell.edu>
 
        * gmalloc.c (_malloc_mutex, _aligned_blocks_mutex) [CYGWIN]: Use
index 7be4e0b46151ac73b8b6bd2c64ba6098387fccd3..e6ab5bf1e9c7dfb2a273d1ba9a479bf40426b45b 100644 (file)
@@ -5129,9 +5129,8 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p
   move_it_to (&it, -1, 0, *y, -1, MOVE_TO_X | MOVE_TO_Y);
 
   /* TO_X is the pixel position that the iterator will compute for the
-     glyph at *X.  We add it.first_visible_x because iterator
-     positions include the hscroll.  */
-  to_x = x0 + it.first_visible_x;
+     glyph at *X.  */
+  to_x = x0;
   if (it.bidi_it.paragraph_dir == R2L)
     /* For lines in an R2L paragraph, we need to mirror TO_X wrt the
        text area.  This is because the iterator, even in R2L
@@ -5145,6 +5144,10 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p
        it should be mirrored into zero pixel position.)  */
     to_x = window_box_width (w, TEXT_AREA) - to_x - 1;
 
+  /* We need to add it.first_visible_x because iterator positions
+     include the hscroll. */
+  to_x += it.first_visible_x;
+
   /* Now move horizontally in the row to the glyph under *X.  Second
      argument is ZV to prevent move_it_in_display_line from matching
      based on buffer positions.  */