diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/xdisp.c | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ec904da39bb..b9451fb9006 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-10-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * xdisp.c (draw_glyphs): Set clipping to highlight boundaries. | ||
| 4 | [Backport] | ||
| 5 | |||
| 1 | 2014-10-20 Glenn Morris <rgm@gnu.org> | 6 | 2014-10-20 Glenn Morris <rgm@gnu.org> |
| 2 | 7 | ||
| 3 | * minibuf.c (history-length): Increase default from 30 to 100. | 8 | * 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, | |||
| 24934 | else | 24934 | else |
| 24935 | overlap_hl = DRAW_NORMAL_TEXT; | 24935 | overlap_hl = DRAW_NORMAL_TEXT; |
| 24936 | 24936 | ||
| 24937 | if (hl != overlap_hl) | ||
| 24938 | clip_head = head; | ||
| 24937 | j = i; | 24939 | j = i; |
| 24938 | BUILD_GLYPH_STRINGS (j, start, h, t, | 24940 | BUILD_GLYPH_STRINGS (j, start, h, t, |
| 24939 | overlap_hl, dummy_x, last_x); | 24941 | overlap_hl, dummy_x, last_x); |
| 24940 | start = i; | 24942 | start = i; |
| 24941 | compute_overhangs_and_x (t, head->x, 1); | 24943 | compute_overhangs_and_x (t, head->x, 1); |
| 24942 | prepend_glyph_string_lists (&head, &tail, h, t); | 24944 | prepend_glyph_string_lists (&head, &tail, h, t); |
| 24943 | clip_head = head; | 24945 | if (clip_head == NULL) |
| 24946 | clip_head = head; | ||
| 24944 | } | 24947 | } |
| 24945 | 24948 | ||
| 24946 | /* Prepend glyph strings for glyphs in front of the first glyph | 24949 | /* 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, | |||
| 24961 | else | 24964 | else |
| 24962 | overlap_hl = DRAW_NORMAL_TEXT; | 24965 | overlap_hl = DRAW_NORMAL_TEXT; |
| 24963 | 24966 | ||
| 24964 | clip_head = head; | 24967 | if (hl == overlap_hl || clip_head == NULL) |
| 24968 | clip_head = head; | ||
| 24965 | BUILD_GLYPH_STRINGS (i, start, h, t, | 24969 | BUILD_GLYPH_STRINGS (i, start, h, t, |
| 24966 | overlap_hl, dummy_x, last_x); | 24970 | overlap_hl, dummy_x, last_x); |
| 24967 | for (s = h; s; s = s->next) | 24971 | for (s = h; s; s = s->next) |
| @@ -24985,13 +24989,16 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, | |||
| 24985 | else | 24989 | else |
| 24986 | overlap_hl = DRAW_NORMAL_TEXT; | 24990 | overlap_hl = DRAW_NORMAL_TEXT; |
| 24987 | 24991 | ||
| 24992 | if (hl != overlap_hl) | ||
| 24993 | clip_tail = tail; | ||
| 24988 | BUILD_GLYPH_STRINGS (end, i, h, t, | 24994 | BUILD_GLYPH_STRINGS (end, i, h, t, |
| 24989 | overlap_hl, x, last_x); | 24995 | overlap_hl, x, last_x); |
| 24990 | /* Because BUILD_GLYPH_STRINGS updates the first argument, | 24996 | /* Because BUILD_GLYPH_STRINGS updates the first argument, |
| 24991 | we don't have `end = i;' here. */ | 24997 | we don't have `end = i;' here. */ |
| 24992 | compute_overhangs_and_x (h, tail->x + tail->width, 0); | 24998 | compute_overhangs_and_x (h, tail->x + tail->width, 0); |
| 24993 | append_glyph_string_lists (&head, &tail, h, t); | 24999 | append_glyph_string_lists (&head, &tail, h, t); |
| 24994 | clip_tail = tail; | 25000 | if (clip_tail == NULL) |
| 25001 | clip_tail = tail; | ||
| 24995 | } | 25002 | } |
| 24996 | 25003 | ||
| 24997 | /* Append glyph strings for glyphs following the last glyph | 25004 | /* Append glyph strings for glyphs following the last glyph |
| @@ -25009,7 +25016,8 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, | |||
| 25009 | else | 25016 | else |
| 25010 | overlap_hl = DRAW_NORMAL_TEXT; | 25017 | overlap_hl = DRAW_NORMAL_TEXT; |
| 25011 | 25018 | ||
| 25012 | clip_tail = tail; | 25019 | if (hl == overlap_hl || clip_tail == NULL) |
| 25020 | clip_tail = tail; | ||
| 25013 | i++; /* We must include the Ith glyph. */ | 25021 | i++; /* We must include the Ith glyph. */ |
| 25014 | BUILD_GLYPH_STRINGS (end, i, h, t, | 25022 | BUILD_GLYPH_STRINGS (end, i, h, t, |
| 25015 | overlap_hl, x, last_x); | 25023 | overlap_hl, x, last_x); |