]> code.delx.au - gnu-emacs/commitdiff
* xdisp.c (erase_phys_cursor): Fix confusion between window-relative and text area...
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Wed, 22 Oct 2014 01:39:48 +0000 (10:39 +0900)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Wed, 22 Oct 2014 01:39:48 +0000 (10:39 +0900)
src/ChangeLog
src/xdisp.c

index b9451fb9006f8337023dffe1e449ab589f07934c..28af50269286cb85592190a866a7cede74119db2 100644 (file)
@@ -2,6 +2,8 @@
 
        * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
        [Backport]
+       (erase_phys_cursor): Fix confusion between window-relative and
+       text area-relative x-coordinates.  [Backport]
 
 2014-10-20  Glenn Morris  <rgm@gnu.org>
 
index da56885d2eb9f5cfc90759264bb2de4d236aef16..f0726ecce70d831f7a27a624a43cf961ee64ead8 100644 (file)
@@ -27467,7 +27467,7 @@ erase_phys_cursor (struct window *w)
   /* Maybe clear the display under the cursor.  */
   if (w->phys_cursor_type == HOLLOW_BOX_CURSOR)
     {
-      int x, y, left_x;
+      int x, y;
       int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
       int width;
 
@@ -27476,13 +27476,15 @@ erase_phys_cursor (struct window *w)
        goto mark_cursor_off;
 
       width = cursor_glyph->pixel_width;
-      left_x = window_box_left_offset (w, TEXT_AREA);
       x = w->phys_cursor.x;
-      if (x < left_x)
-       width -= left_x - x;
+      if (x < 0)
+       {
+         width += x;
+         x = 0;
+       }
       width = min (width, window_box_width (w, TEXT_AREA) - x);
       y = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, cursor_row->y));
-      x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, max (x, left_x));
+      x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, x);
 
       if (width > 0)
        FRAME_RIF (f)->clear_frame_area (f, x, y, width, cursor_row->visible_height);