summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-12-31 11:34:28 +0800
committerPo Lu <luangruo@yahoo.com>2023-12-31 11:34:28 +0800
commit4ffd16b8e5e4635246155fdb23967707bcb70949 (patch)
tree5ad57156ccacc284eac1e33bc47ab6cbf94505b0 /src
parent2bbd50a03d61bb38a9b72ba86bcd46106cfeedfe (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.c9
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)