diff options
| author | YAMAMOTO Mitsuharu | 2012-09-11 12:32:41 +0900 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2012-09-11 12:32:41 +0900 |
| commit | 3057e615af94af8d08f475208c7e459f5d7115ac (patch) | |
| tree | 1e784dddfa2fdd42e420cd4ff469d66b4f7f8368 /src/xdisp.c | |
| parent | c990426a9883c1bd1782e6b117184b654eecda67 (diff) | |
| download | emacs-3057e615af94af8d08f475208c7e459f5d7115ac.tar.gz emacs-3057e615af94af8d08f475208c7e459f5d7115ac.zip | |
Fix wrong overhang display for gstring compositions (Bug#12364).
* xdisp.c (right_overwritten, right_overwriting): Also handle gstring
composition cases (Bug#12364).
* xterm.c (x_draw_glyph_string): Avoid overwriting inverted left
overhang of succeeding glyphs overlapping box cursor.
* w32term.c (x_draw_glyph_string): Likewise.
Diffstat (limited to 'src/xdisp.c')
| -rw-r--r-- | src/xdisp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index a7913768d8a..1deda682192 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -23050,7 +23050,8 @@ right_overwritten (struct glyph_string *s) | |||
| 23050 | { | 23050 | { |
| 23051 | int x = 0, i; | 23051 | int x = 0, i; |
| 23052 | struct glyph *glyphs = s->row->glyphs[s->area]; | 23052 | struct glyph *glyphs = s->row->glyphs[s->area]; |
| 23053 | int first = (s->first_glyph - glyphs) + (s->cmp ? 1 : s->nchars); | 23053 | int first = (s->first_glyph - glyphs |
| 23054 | + (s->first_glyph->type == COMPOSITE_GLYPH ? 1 : s->nchars)); | ||
| 23054 | int end = s->row->used[s->area]; | 23055 | int end = s->row->used[s->area]; |
| 23055 | 23056 | ||
| 23056 | for (i = first; i < end && s->right_overhang > x; ++i) | 23057 | for (i = first; i < end && s->right_overhang > x; ++i) |
| @@ -23073,7 +23074,8 @@ right_overwriting (struct glyph_string *s) | |||
| 23073 | int i, k, x; | 23074 | int i, k, x; |
| 23074 | int end = s->row->used[s->area]; | 23075 | int end = s->row->used[s->area]; |
| 23075 | struct glyph *glyphs = s->row->glyphs[s->area]; | 23076 | struct glyph *glyphs = s->row->glyphs[s->area]; |
| 23076 | int first = (s->first_glyph - glyphs) + (s->cmp ? 1 : s->nchars); | 23077 | int first = (s->first_glyph - glyphs |
| 23078 | + (s->first_glyph->type == COMPOSITE_GLYPH ? 1 : s->nchars)); | ||
| 23077 | 23079 | ||
| 23078 | k = -1; | 23080 | k = -1; |
| 23079 | x = 0; | 23081 | x = 0; |