summaryrefslogtreecommitdiff
path: root/src/w32term.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2010-11-01 16:35:04 +0900
committerKenichi Handa <handa@m17n.org>2010-11-01 16:35:04 +0900
commit65b6b59a8030b09d2a32ee88837a061e22751988 (patch)
treeec59f4cbb9e9eca472cfb6a5e82158fe4bfdab0b /src/w32term.c
parentb18fad6db4efeda274dcb36706a4146650570e6b (diff)
downloademacs-65b6b59a8030b09d2a32ee88837a061e22751988.tar.gz
w32term.c (x_draw_glyphless_glyph_string_foreground): Fix the arg with_background for font->driver->draw.
Diffstat (limited to 'src/w32term.c')
-rw-r--r--src/w32term.c15
1 files changed, 8 insertions, 7 deletions
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;