From: Po Lu Date: Sun, 31 Dec 2023 03:34:28 +0000 (+0800) Subject: Prevent overlapping sections of glyphs from being misaligned X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ca57db2da53253a835df2042496a0505c4ca8748;p=emacs.git Prevent overlapping sections of glyphs from being misaligned * src/xdisp.c (gui_fix_overlapping_area): Offset all glyphs by ROW->x. (cherry picked from commit 4ffd16b8e5e4635246155fdb23967707bcb70949) --- diff --git a/src/xdisp.c b/src/xdisp.c index 2a979c5cb9e..7023c26c1b4 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -33565,13 +33565,18 @@ notice_overwritten_cursor (struct window *w, enum glyph_row_area area, void gui_fix_overlapping_area (struct window *w, struct glyph_row *row, - enum glyph_row_area area, int overlaps) + enum glyph_row_area area, int overlaps) { int i, x; block_input (); - x = 0; + /* row->x might be smaller than zero when produced from an iterator + under horizontal scrolling. Offset all measurements by this + basic value, lest hscrolled text with overlaps be displayed with + its overlapping portions misaligned. */ + x = row->x; + for (i = 0; i < row->used[area];) { if (row->glyphs[area][i].overlaps_vertically_p)