From: Alp Aker Date: Thu, 28 Jul 2011 18:41:21 +0000 (-0400) Subject: Fix display artifacts from ns_dumpglyphs_stretch (Bug#8470). X-Git-Url: http://git.hcoop.net/bpt/emacs.git/commitdiff_plain/bf3492a57ec757c0efadb6e821daa507e499057d?hp=be8ec0b3d40a22b9cb180d7cb3c9d22c81c64f14 Fix display artifacts from ns_dumpglyphs_stretch (Bug#8470). * src/nsterm.m (ns_dumpglyphs_stretch): Avoid overwriting left fringe or scroll bar. --- diff --git a/src/ChangeLog b/src/ChangeLog index 2bd3cf8ec3..3f9c098b99 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -9,6 +9,9 @@ (EmacsTooltip -init): Remove bezels and add shadows to tooltip windows. + * nsterm.m (ns_dumpglyphs_stretch): Avoid overwriting left fringe + or scroll bar (Bug#8470). + 2011-07-28 Alp Aker Implement strike-through and overline on NextStep (Bug#8863). diff --git a/src/nsterm.m b/src/nsterm.m index e9e7dcc080..d4b1a3f847 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -3110,12 +3110,24 @@ ns_dumpglyphs_stretch (struct glyph_string *s) { if (!s->row->full_width_p) { + int overrun, leftoverrun; + /* truncate to avoid overwriting fringe and/or scrollbar */ - int overrun = max (0, (s->x + s->background_width) - - (WINDOW_BOX_RIGHT_EDGE_X (s->w) - - WINDOW_RIGHT_FRINGE_WIDTH (s->w))); + overrun = max (0, (s->x + s->background_width) + - (WINDOW_BOX_RIGHT_EDGE_X (s->w) + - WINDOW_RIGHT_FRINGE_WIDTH (s->w))); r[i].size.width -= overrun; + /* truncate to avoid overwriting to left of the window box */ + leftoverrun = (WINDOW_BOX_LEFT_EDGE_X (s->w) + + WINDOW_LEFT_FRINGE_WIDTH (s->w)) - s->x; + + if (leftoverrun > 0) + { + r[i].origin.x += leftoverrun; + r[i].size.width -= leftoverrun; + } + /* XXX: Try to work between problem where a stretch glyph on a partially-visible bottom row will clear part of the modeline, and another where list-buffers headers and similar