diff options
-rw-r--r-- | src/ChangeLog | 2 | ||||
-rw-r--r-- | src/xdisp.c | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b9451fb9006..28af5026928 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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> diff --git a/src/xdisp.c b/src/xdisp.c index da56885d2eb..f0726ecce70 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -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); |