From: YAMAMOTO Mitsuharu Date: Wed, 22 Oct 2014 01:31:37 +0000 (+0900) Subject: * xdisp.c (draw_glyphs): Set clipping to highlight boundaries. [Backport] X-Git-Tag: emacs-24.4.90~323 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=249836259909ce1533ced5dee96049b3b919e93d;p=emacs.git * xdisp.c (draw_glyphs): Set clipping to highlight boundaries. [Backport] --- diff --git a/src/ChangeLog b/src/ChangeLog index ec904da39bb..b9451fb9006 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-10-22 YAMAMOTO Mitsuharu + + * xdisp.c (draw_glyphs): Set clipping to highlight boundaries. + [Backport] + 2014-10-20 Glenn Morris * minibuf.c (history-length): Increase default from 30 to 100. diff --git a/src/xdisp.c b/src/xdisp.c index 7ed11530846..da56885d2eb 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -24934,13 +24934,16 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, else overlap_hl = DRAW_NORMAL_TEXT; + if (hl != overlap_hl) + clip_head = head; j = i; BUILD_GLYPH_STRINGS (j, start, h, t, overlap_hl, dummy_x, last_x); start = i; compute_overhangs_and_x (t, head->x, 1); prepend_glyph_string_lists (&head, &tail, h, t); - clip_head = head; + if (clip_head == NULL) + clip_head = head; } /* Prepend glyph strings for glyphs in front of the first glyph @@ -24961,7 +24964,8 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, else overlap_hl = DRAW_NORMAL_TEXT; - clip_head = head; + if (hl == overlap_hl || clip_head == NULL) + clip_head = head; BUILD_GLYPH_STRINGS (i, start, h, t, overlap_hl, dummy_x, last_x); for (s = h; s; s = s->next) @@ -24985,13 +24989,16 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, else overlap_hl = DRAW_NORMAL_TEXT; + if (hl != overlap_hl) + clip_tail = tail; BUILD_GLYPH_STRINGS (end, i, h, t, overlap_hl, x, last_x); /* Because BUILD_GLYPH_STRINGS updates the first argument, we don't have `end = i;' here. */ compute_overhangs_and_x (h, tail->x + tail->width, 0); append_glyph_string_lists (&head, &tail, h, t); - clip_tail = tail; + if (clip_tail == NULL) + clip_tail = tail; } /* Append glyph strings for glyphs following the last glyph @@ -25009,7 +25016,8 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, else overlap_hl = DRAW_NORMAL_TEXT; - clip_tail = tail; + if (hl == overlap_hl || clip_tail == NULL) + clip_tail = tail; i++; /* We must include the Ith glyph. */ BUILD_GLYPH_STRINGS (end, i, h, t, overlap_hl, x, last_x);