diff options
| author | Po Lu <luangruo@yahoo.com> | 2023-12-31 11:34:28 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2023-12-31 11:34:28 +0800 |
| commit | 4ffd16b8e5e4635246155fdb23967707bcb70949 (patch) | |
| tree | 5ad57156ccacc284eac1e33bc47ab6cbf94505b0 /src | |
| parent | 2bbd50a03d61bb38a9b72ba86bcd46106cfeedfe (diff) | |
Prevent overlapping sections of glyphs from being misaligned
* src/xdisp.c (gui_fix_overlapping_area): Offset all glyphs by
ROW->x.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 9 |
1 files changed, 7 insertions, 2 deletions
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) |
