From 65b6b59a8030b09d2a32ee88837a061e22751988 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Mon, 1 Nov 2010 16:35:04 +0900 Subject: [PATCH] w32term.c (x_draw_glyphless_glyph_string_foreground): Fix the arg with_background for font->driver->draw. --- src/ChangeLog | 3 +++ src/w32term.c | 15 ++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2d1ed5a96fb..6128808a2a7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -16,6 +16,9 @@ (last_glyphless_glyph_frame, last_glyphless_glyph_face_id) (last_glyphless_glyph_merged_face_id): Make them non-static. + * w32term.c (x_draw_glyphless_glyph_string_foreground): Fix + the arg with_background for font->driver->draw. + 2010-10-29 Kenichi Handa * w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): Surround diff --git a/src/w32term.c b/src/w32term.c index 49447d6eafc..a491e0941db 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -1402,6 +1402,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s) struct glyph *glyph = s->first_glyph; XChar2b char2b[8]; int x, i, j; + int with_background; /* If first glyph of S has a left box line, start drawing the text of S to the right of that box line. */ @@ -1416,7 +1417,8 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s) SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); s->char2b = char2b; - + with_background = ! (s->for_overlaps + || (s->background_filled_p && s->hl != DRAW_CURSOR)); for (i = 0; i < s->nchars; i++, glyph++) { char buf[7], *str = NULL; @@ -1453,7 +1455,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s) unsigned code; HFONT old_font; - old_font = SelectObject (s->hdc, FONT_HANDLE (font)); + old_font = SelectObject (s->hdc, FONT_HANDLE (font)); /* It is assured that all LEN characters in STR is ASCII. */ for (j = 0; j < len; j++) { @@ -1463,11 +1465,11 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s) font->driver->draw (s, 0, upper_len, x + glyph->slice.glyphless.upper_xoff, s->ybase + glyph->slice.glyphless.upper_yoff, - 0); + with_background); font->driver->draw (s, upper_len, len, x + glyph->slice.glyphless.lower_xoff, s->ybase + glyph->slice.glyphless.lower_yoff, - 0); + with_background); SelectObject (s->hdc, old_font); } if (glyph->u.glyphless.method != GLYPHLESS_DISPLAY_THIN_SPACE) @@ -2369,11 +2371,10 @@ x_draw_glyph_string (struct glyph_string *s) break; case GLYPHLESS_GLYPH: - if (s->for_overlaps || (s->cmp_from > 0 - && ! s->first_glyph->u.cmp.automatic)) + if (s->for_overlaps) s->background_filled_p = 1; else - x_draw_glyph_string_background (s, 1); + x_draw_glyph_string_background (s, 0); x_draw_glyphless_glyph_string_foreground (s); break; -- 2.39.5