Mercurial > hg > xemacs-beta
comparison src/redisplay-msw.c @ 251:677f6a0ee643 r20-5b24
Import from CVS: tag r20-5b24
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:19:59 +0200 |
parents | 83b3d10dcba9 |
children | 157b30c96d03 |
comparison
equal
deleted
inserted
replaced
250:f385a461c9aa | 251:677f6a0ee643 |
---|---|
44 #include "redisplay.h" | 44 #include "redisplay.h" |
45 #include "sysdep.h" | 45 #include "sysdep.h" |
46 #include "window.h" | 46 #include "window.h" |
47 | 47 |
48 #include "windows.h" | 48 #include "windows.h" |
49 #ifdef MULE | |
50 #include "mule-ccl.h" | |
51 #include "mule-charset.h" | |
52 #endif | |
49 | 53 |
50 /* MSWINDOWS_DIVIDER_LINE_WIDTH is the width of the line drawn in the gutter. | 54 /* MSWINDOWS_DIVIDER_LINE_WIDTH is the width of the line drawn in the gutter. |
51 MSWINDOWS_DIVIDER_SPACING is the amount of blank space on each side of the line. | 55 MSWINDOWS_DIVIDER_SPACING is the amount of blank space on each side of the line. |
52 MSWINDOWS_DIVIDER_WIDTH = MSWINDOWS_DIVIDER_LINE_WIDTH + 2*MSWINDOWS_DIVIDER_SPACING | 56 MSWINDOWS_DIVIDER_WIDTH = MSWINDOWS_DIVIDER_LINE_WIDTH + 2*MSWINDOWS_DIVIDER_SPACING |
53 */ | 57 */ |
58 #define MSWINDOWS_EOL_CURSOR_WIDTH 5 | 62 #define MSWINDOWS_EOL_CURSOR_WIDTH 5 |
59 | 63 |
60 /* | 64 /* |
61 * Random forward delarations | 65 * Random forward delarations |
62 */ | 66 */ |
67 static void mswindows_update_dc (HDC hdc, Lisp_Object font, Lisp_Object fg, | |
68 Lisp_Object bg, Lisp_Object bg_pmap); | |
63 static void mswindows_clear_region (Lisp_Object locale, face_index findex, | 69 static void mswindows_clear_region (Lisp_Object locale, face_index findex, |
64 int x, int y, int width, int height); | 70 int x, int y, int width, int height); |
65 static void mswindows_output_vertical_divider (struct window *w, int clear); | 71 static void mswindows_output_vertical_divider (struct window *w, int clear); |
66 static void mswindows_redraw_exposed_windows (Lisp_Object window, int x, | 72 static void mswindows_redraw_exposed_windows (Lisp_Object window, int x, |
67 int y, int width, int height); | 73 int y, int width, int height); |
179 } | 185 } |
180 | 186 |
181 | 187 |
182 static int | 188 static int |
183 mswindows_text_width_single_run (HDC hdc, struct face_cachel *cachel, | 189 mswindows_text_width_single_run (HDC hdc, struct face_cachel *cachel, |
184 textual_run *run) | 190 textual_run *run) |
185 { | 191 { |
186 Lisp_Object font_inst = FACE_CACHEL_FONT (cachel, run->charset); | 192 Lisp_Object font_inst = FACE_CACHEL_FONT (cachel, run->charset); |
187 struct Lisp_Font_Instance *fi = XFONT_INSTANCE (font_inst); | 193 struct Lisp_Font_Instance *fi = XFONT_INSTANCE (font_inst); |
188 SIZE size; | 194 SIZE size; |
189 | 195 |
190 #if 0 /* XXX HACK: mswindows_text_width is broken and will pass in a NULL hdc */ | |
191 if (!fi->proportional_p) | |
192 #else | |
193 if (!fi->proportional_p || !hdc) | 196 if (!fi->proportional_p || !hdc) |
194 #endif | |
195 return (fi->width * run->len); | 197 return (fi->width * run->len); |
196 else | 198 else |
197 { | 199 { |
198 assert(run->dimension == 1); /* XXX FIXME! */ | 200 assert(run->dimension == 1); /* #### FIXME! */ |
199 GetTextExtentPoint32(hdc, run->ptr, run->len, &size); | 201 mswindows_update_dc (hdc, font_inst, Qnil, Qnil, Qnil); |
202 GetTextExtentPoint32 (hdc, run->ptr, run->len, &size); | |
200 return(size.cx); | 203 return(size.cx); |
201 } | 204 } |
202 } | 205 } |
203 | 206 |
204 | 207 |
205 /***************************************************************************** | 208 /***************************************************************************** |
206 mswindows_update_gc | 209 mswindows_update_dc |
207 | 210 |
208 Given a number of parameters munge the GC so it has those properties. | 211 Given a number of parameters munge the DC so it has those properties. |
209 ****************************************************************************/ | 212 ****************************************************************************/ |
210 static void | 213 static void |
211 mswindows_update_gc (HDC hdc, Lisp_Object font, Lisp_Object fg, Lisp_Object bg, | 214 mswindows_update_dc (HDC hdc, Lisp_Object font, Lisp_Object fg, |
212 Lisp_Object bg_pmap, Lisp_Object lwidth) | 215 Lisp_Object bg, Lisp_Object bg_pmap) |
213 { | 216 { |
214 if (!NILP (font)) | 217 if (!NILP (font)) |
215 SelectObject(hdc, (XFONT_INSTANCE (font))->data); | 218 SelectObject(hdc, FONT_INSTANCE_MSWINDOWS_HFONT (XFONT_INSTANCE (font))); |
216 | 219 |
217 /* evil kludge! - XXX do we need this? */ | 220 #ifdef DEBUG_XEMACS |
221 /* evil kludge! - #### do we need this? */ | |
218 if (!NILP (fg) && !COLOR_INSTANCEP (fg)) | 222 if (!NILP (fg) && !COLOR_INSTANCEP (fg)) |
219 { | 223 { |
220 fprintf (stderr, "Help! mswindows_update_gc got a bogus fg value! fg = "); | 224 /* this break under mule */ |
221 debug_print (fg); | 225 #if 0 |
226 fprintf (stderr, "Help! mswindows_update_dc got a bogus fg value! fg = "); | |
227 debug_print (fg); | |
228 #endif | |
222 fg = Qnil; | 229 fg = Qnil; |
223 } | 230 } |
224 | 231 |
225 if (!NILP (bg) && !COLOR_INSTANCEP (bg)) | 232 if (!NILP (bg) && !COLOR_INSTANCEP (bg)) |
226 { | 233 { |
227 fprintf (stderr, "Help! mswindows_update_gc got a bogus fg value! bg = "); | 234 /* this break under mule */ |
228 debug_print (bg); | 235 #if 0 |
236 fprintf (stderr, "Help! mswindows_update_dc got a bogus fg value! bg = "); | |
237 debug_print (bg); | |
238 #endif | |
229 bg = Qnil; | 239 bg = Qnil; |
230 } | 240 } |
241 #endif | |
231 | 242 |
232 if (!NILP (fg)) | 243 if (!NILP (fg)) |
233 SetTextColor (hdc, COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (fg))); | 244 SetTextColor (hdc, COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (fg))); |
234 | 245 |
235 if (!NILP (bg)) | 246 if (!NILP (bg)) |
252 gcv.tile = XIMAGE_INSTANCE_X_PIXMAP (bg_pmap); | 263 gcv.tile = XIMAGE_INSTANCE_X_PIXMAP (bg_pmap); |
253 mask |= (GCTile | GCFillStyle); | 264 mask |= (GCTile | GCFillStyle); |
254 } | 265 } |
255 } | 266 } |
256 #endif | 267 #endif |
257 | |
258 #if 0 /* XXX FIXME */ | |
259 if (!NILP (lwidth)) | |
260 { | |
261 gcv.line_width = XINT (lwidth); | |
262 mask |= GCLineWidth; | |
263 } | |
264 #endif | |
265 } | 268 } |
266 | 269 |
267 | 270 |
268 /***************************************************************************** | 271 /***************************************************************************** |
269 mswindows_output_hline | 272 mswindows_output_hline |
295 if (!IMAGE_INSTANCEP (bg_pmap) | 298 if (!IMAGE_INSTANCEP (bg_pmap) |
296 || !IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (bg_pmap))) | 299 || !IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (bg_pmap))) |
297 bg_pmap = Qnil; | 300 bg_pmap = Qnil; |
298 | 301 |
299 /* #### This deals only with solid colors */ | 302 /* #### This deals only with solid colors */ |
300 mswindows_update_gc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, | 303 mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, |
301 cachel->background, Qnil, Qnil); | 304 cachel->background, Qnil); |
302 ExtTextOut (FRAME_MSWINDOWS_DC (f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); | 305 ExtTextOut (FRAME_MSWINDOWS_DC (f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); |
303 } | 306 } |
304 | 307 |
305 | 308 |
306 /***************************************************************************** | 309 /***************************************************************************** |
350 Output nothing at eol if bar cursor */ | 353 Output nothing at eol if bar cursor */ |
351 cachel = WINDOW_FACE_CACHEL (w, | 354 cachel = WINDOW_FACE_CACHEL (w, |
352 (bar_p | 355 (bar_p |
353 ? rb->findex | 356 ? rb->findex |
354 : get_builtin_face_cache_index (w, Vtext_cursor_face))); | 357 : get_builtin_face_cache_index (w, Vtext_cursor_face))); |
355 mswindows_update_gc (hdc, font, cachel->foreground, | 358 mswindows_update_dc (hdc, font, cachel->foreground, |
356 cachel->background, Qnil, Qnil); | 359 cachel->background, Qnil); |
357 ExtTextOut (FRAME_MSWINDOWS_DC (f), xpos, dl->ypos, ETO_OPAQUE, | 360 ExtTextOut (hdc, xpos, dl->ypos, ETO_OPAQUE|ETO_CLIPPED, &rect, p_char, n_char, NULL); |
358 &rect, p_char, n_char, NULL); | |
359 | 361 |
360 if (focus && bar_p) | 362 if (focus && bar_p) |
361 { | 363 { |
362 rect.right = rect.left + (EQ (bar, Qt) ? 1 : 2); | 364 rect.right = rect.left + (EQ (bar, Qt) ? 1 : 2); |
363 cachel = WINDOW_FACE_CACHEL (w, | 365 cachel = WINDOW_FACE_CACHEL (w, |
364 get_builtin_face_cache_index (w, Vtext_cursor_face)); | 366 get_builtin_face_cache_index (w, Vtext_cursor_face)); |
365 mswindows_update_gc (hdc, Qnil, Qnil, | 367 mswindows_update_dc (hdc, Qnil, Qnil, cachel->background, Qnil); |
366 cachel->background, Qnil, Qnil); | 368 ExtTextOut (hdc, xpos, dl->ypos, ETO_OPAQUE, &rect, NULL, 0, NULL); |
367 ExtTextOut (FRAME_MSWINDOWS_DC (f), xpos, dl->ypos, ETO_OPAQUE, | |
368 &rect, NULL, 0, NULL); | |
369 } | 369 } |
370 else if (!focus) | 370 else if (!focus) |
371 { | 371 { |
372 /* Now have real character drawn in its own color. We defalte | 372 /* Now have real character drawn in its own color. We defalte |
373 the rectangle so character cell will be bounded by the | 373 the rectangle so character cell will be bounded by the |
380 n_char = 1; | 380 n_char = 1; |
381 } | 381 } |
382 | 382 |
383 cachel = WINDOW_FACE_CACHEL (w, (real_char_p ? rb->findex | 383 cachel = WINDOW_FACE_CACHEL (w, (real_char_p ? rb->findex |
384 : get_builtin_face_cache_index (w, Vdefault_face))); | 384 : get_builtin_face_cache_index (w, Vdefault_face))); |
385 mswindows_update_gc (hdc, Qnil, cachel->foreground, | 385 mswindows_update_dc (hdc, Qnil, cachel->foreground, |
386 cachel->background, Qnil, Qnil); | 386 cachel->background, Qnil); |
387 ExtTextOut (FRAME_MSWINDOWS_DC (f), xpos, dl->ypos, ETO_OPAQUE | ETO_CLIPPED, | 387 ExtTextOut (hdc, xpos, dl->ypos, ETO_OPAQUE | ETO_CLIPPED, |
388 &rect, p_char, n_char, NULL); | 388 &rect, p_char, n_char, NULL); |
389 } | 389 } |
390 } | 390 } |
391 | 391 |
392 | 392 |
420 int width, face_index findex) | 420 int width, face_index findex) |
421 { | 421 { |
422 struct frame *f = XFRAME (w->frame); | 422 struct frame *f = XFRAME (w->frame); |
423 /* struct device *d = XDEVICE (f->device);*/ | 423 /* struct device *d = XDEVICE (f->device);*/ |
424 Lisp_Object window = Qnil; | 424 Lisp_Object window = Qnil; |
425 HDC hdc; | 425 HDC hdc = FRAME_MSWINDOWS_DC (f); |
426 int clip_end; | 426 int clip_end; |
427 Lisp_Object bg_pmap; | 427 Lisp_Object bg_pmap; |
428 int len = Dynarr_length (buf); | 428 int len = Dynarr_length (buf); |
429 unsigned char *text_storage = (unsigned char *) alloca (2 * len); | 429 unsigned char *text_storage = (unsigned char *) alloca (2 * len); |
430 textual_run *runs = alloca_array (textual_run, len); | 430 textual_run *runs = alloca_array (textual_run, len); |
431 int nruns; | 431 int nruns; |
432 int i; | 432 int i; |
433 struct face_cachel *cachel = WINDOW_FACE_CACHEL (w, findex); | 433 struct face_cachel *cachel = WINDOW_FACE_CACHEL (w, findex); |
434 | 434 |
435 XSETWINDOW (window, w); | 435 XSETWINDOW (window, w); |
436 hdc = FRAME_MSWINDOWS_DC(f); | |
437 | 436 |
438 #if 0 /* XXX: FIXME? */ | 437 #if 0 /* XXX: FIXME? */ |
439 /* We can't work out the width before we've set the font in the DC */ | 438 /* We can't work out the width before we've set the font in the DC */ |
440 if (width < 0) | 439 if (width < 0) |
441 width = mswindows_text_width (cachel, Dynarr_atp (buf, 0), Dynarr_length (buf)); | 440 width = mswindows_text_width (cachel, Dynarr_atp (buf, 0), Dynarr_length (buf)); |
470 clip_end, dl->ypos + dl->descent - dl->clip }; | 469 clip_end, dl->ypos + dl->descent - dl->clip }; |
471 | 470 |
472 if (EQ (font, Vthe_null_font_instance)) | 471 if (EQ (font, Vthe_null_font_instance)) |
473 continue; | 472 continue; |
474 | 473 |
475 mswindows_update_gc (hdc, font, cachel->foreground, | 474 mswindows_update_dc (hdc, font, cachel->foreground, |
476 NILP(bg_pmap) ? cachel->background : Qnil, | 475 NILP(bg_pmap) ? cachel->background : Qnil, Qnil); |
477 Qnil, Qnil); | |
478 | 476 |
479 this_width = mswindows_text_width_single_run (hdc, cachel, runs + i); | 477 this_width = mswindows_text_width_single_run (hdc, cachel, runs + i); |
480 | 478 |
481 /* #### bg_pmap should be output here */ | 479 /* #### bg_pmap should be output here */ |
482 | 480 |
500 * | 498 * |
501 * Function checks whether deadbox intersects with the rectangle pointed | 499 * Function checks whether deadbox intersects with the rectangle pointed |
502 * to by PRC, and paints only the intersection | 500 * to by PRC, and paints only the intersection |
503 */ | 501 */ |
504 static void | 502 static void |
505 mswindows_redisplay_deadbox_maybe (struct window *w, | 503 mswindows_redisplay_deadbox_maybe (struct window *w, CONST RECT* prc) |
506 CONST RECT* prc) | |
507 { | 504 { |
508 int sbh = window_scrollbar_height (w); | 505 int sbh = window_scrollbar_height (w); |
509 int sbw = window_scrollbar_width (w); | 506 int sbw = window_scrollbar_width (w); |
510 RECT rect_dead, rect_paint; | 507 RECT rect_dead, rect_paint; |
511 struct frame *f; | 508 struct frame *f; |
680 WINDOW_MODELINE_RIGHT (w), | 677 WINDOW_MODELINE_RIGHT (w), |
681 dl->ypos + dl->descent + shadow_width}; | 678 dl->ypos + dl->descent + shadow_width}; |
682 UINT edge; | 679 UINT edge; |
683 | 680 |
684 color = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX); | 681 color = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX); |
685 mswindows_update_gc(FRAME_MSWINDOWS_DC(f), Qnil, Qnil, color, Qnil, Qnil); | 682 mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, color, Qnil); |
686 | 683 |
687 if (XINT (w->modeline_shadow_thickness) < 0) | 684 if (XINT (w->modeline_shadow_thickness) < 0) |
688 shadow_width = -shadow_width; | 685 shadow_width = -shadow_width; |
689 | 686 |
690 if (shadow_width < -1) | 687 if (shadow_width < -1) |
694 else if (shadow_width == 1) | 691 else if (shadow_width == 1) |
695 edge = BDR_RAISEDINNER; | 692 edge = BDR_RAISEDINNER; |
696 else | 693 else |
697 edge = EDGE_RAISED; | 694 edge = EDGE_RAISED; |
698 | 695 |
699 DrawEdge (FRAME_MSWINDOWS_DC(f), &rect, edge, BF_RECT); | 696 DrawEdge (FRAME_MSWINDOWS_DC (f), &rect, edge, BF_RECT); |
700 } | 697 } |
701 | 698 |
702 | 699 |
703 /***************************************************************************** | 700 /***************************************************************************** |
704 #### Display methods | 701 #### Display methods |
863 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); | 860 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); |
864 } | 861 } |
865 else | 862 else |
866 { | 863 { |
867 Dynarr_add (buf, rb->object.chr.ch); | 864 Dynarr_add (buf, rb->object.chr.ch); |
868 #if 0 | |
869 mswindows_output_string (w, dl, buf, xpos, 0, start_pixpos, | |
870 rb->width, findex, 1, | |
871 cursor_start, cursor_width, | |
872 cursor_height); | |
873 #else | |
874 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); | 865 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); |
875 #endif | |
876 Dynarr_reset (buf); | 866 Dynarr_reset (buf); |
877 } | 867 } |
878 | 868 |
879 xpos += rb->width; | 869 xpos += rb->width; |
880 elt++; | 870 elt++; |
939 convert_bufbyte_string_into_emchar_dynarr | 929 convert_bufbyte_string_into_emchar_dynarr |
940 (XSTRING_DATA (string), XSTRING_LENGTH (string), buf); | 930 (XSTRING_DATA (string), XSTRING_LENGTH (string), buf); |
941 | 931 |
942 if (rb->cursor_type == CURSOR_ON) | 932 if (rb->cursor_type == CURSOR_ON) |
943 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); | 933 mswindows_output_cursor (w, dl, xpos, cursor_width, rb); |
944 else | 934 else /* #### redisplay-x passes -1 as the width: why ? */ |
945 mswindows_output_string (w, dl, buf, xpos, | 935 mswindows_output_string (w, dl, buf, xpos, |
946 rb->object.dglyph.xoffset, | 936 rb->object.dglyph.xoffset, |
947 start_pixpos, -1, findex); | 937 start_pixpos, rb->width, findex); |
948 Dynarr_reset (buf); | 938 Dynarr_reset (buf); |
949 } | 939 } |
950 break; | 940 break; |
951 | 941 |
952 case IMAGE_MONO_PIXMAP: | 942 case IMAGE_MONO_PIXMAP: |
1036 rect.top = WINDOW_TEXT_TOP (w); | 1026 rect.top = WINDOW_TEXT_TOP (w); |
1037 rect.bottom = WINDOW_BOTTOM (w) - modeline_height; | 1027 rect.bottom = WINDOW_BOTTOM (w) - modeline_height; |
1038 | 1028 |
1039 /* Draw the divider line */ | 1029 /* Draw the divider line */ |
1040 color = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX); | 1030 color = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX); |
1041 mswindows_update_gc(FRAME_MSWINDOWS_DC(f), Qnil, Qnil, color, Qnil, Qnil); | 1031 mswindows_update_dc (FRAME_MSWINDOWS_DC(f), Qnil, Qnil, color, Qnil); |
1042 ExtTextOut (FRAME_MSWINDOWS_DC(f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); | 1032 ExtTextOut (FRAME_MSWINDOWS_DC (f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); |
1043 if (shadow_width) | 1033 if (shadow_width) |
1044 DrawEdge (FRAME_MSWINDOWS_DC(f), &rect, | 1034 DrawEdge (FRAME_MSWINDOWS_DC (f), &rect, |
1045 shadow_width==1 ? BDR_RAISEDINNER : EDGE_RAISED, | 1035 shadow_width==1 ? BDR_RAISEDINNER : EDGE_RAISED, |
1046 BF_TOP|BF_RIGHT|BF_LEFT); | 1036 BF_TOP|BF_RIGHT|BF_LEFT); |
1047 } | 1037 } |
1048 | 1038 |
1049 | 1039 |
1050 /**************************************************************************** | 1040 /**************************************************************************** |
1051 mswindows_text_width | 1041 mswindows_text_width |
1052 | 1042 |
1053 Given a string and a face, return the string's length in pixels when | 1043 Given a string and a face, return the string's length in pixels when |
1054 displayed in the font associated with the face. | 1044 displayed in the font associated with the face. |
1055 XXX FIXME: get redisplay_text_width_emchar_string() etc to pass in the | |
1056 window so we can get hold of the window's frame's gc | |
1057 ****************************************************************************/ | 1045 ****************************************************************************/ |
1058 static int | 1046 static int |
1059 mswindows_text_width (struct face_cachel *cachel, CONST Emchar *str, | 1047 mswindows_text_width (struct frame *f, struct face_cachel *cachel, |
1060 Charcount len) | 1048 CONST Emchar *str, Charcount len) |
1061 { | 1049 { |
1062 int width_so_far = 0; | 1050 int width_so_far = 0; |
1063 unsigned char *text_storage = (unsigned char *) alloca (2 * len); | 1051 unsigned char *text_storage = (unsigned char *) alloca (2 * len); |
1064 textual_run *runs = alloca_array (textual_run, len); | 1052 textual_run *runs = alloca_array (textual_run, len); |
1065 int nruns; | 1053 int nruns; |
1066 int i; | 1054 int i; |
1067 HDC hdc=NULL; /* XXXXX FIXME! only works for non-proportional fonts! */ | |
1068 | 1055 |
1069 nruns = separate_textual_runs (text_storage, runs, str, len); | 1056 nruns = separate_textual_runs (text_storage, runs, str, len); |
1070 | 1057 |
1071 for (i = 0; i < nruns; i++) | 1058 for (i = 0; i < nruns; i++) |
1072 width_so_far += mswindows_text_width_single_run (hdc, cachel, runs + i); | 1059 width_so_far += mswindows_text_width_single_run (FRAME_MSWINDOWS_DC (f), |
1060 cachel, runs + i); | |
1073 | 1061 |
1074 return width_so_far; | 1062 return width_so_far; |
1075 } | 1063 } |
1076 | 1064 |
1077 | 1065 |
1146 { | 1134 { |
1147 fcolor = FACE_FOREGROUND (Vdefault_face, locale); | 1135 fcolor = FACE_FOREGROUND (Vdefault_face, locale); |
1148 bcolor = FACE_BACKGROUND (Vdefault_face, locale); | 1136 bcolor = FACE_BACKGROUND (Vdefault_face, locale); |
1149 } | 1137 } |
1150 | 1138 |
1151 mswindows_update_gc (FRAME_MSWINDOWS_DC(f), Qnil, fcolor, bcolor, background_pixmap, Qnil); | 1139 mswindows_update_dc (FRAME_MSWINDOWS_DC (f), |
1140 Qnil, fcolor, bcolor, background_pixmap); | |
1152 } | 1141 } |
1153 | 1142 |
1154 /* XX FIXME: Get brush from background_pixmap here */ | 1143 /* XX FIXME: Get brush from background_pixmap here */ |
1155 assert(0); | 1144 assert(0); |
1156 FillRect (FRAME_MSWINDOWS_DC(f), &rect, brush); | 1145 FillRect (FRAME_MSWINDOWS_DC(f), &rect, brush); |
1157 } | 1146 } |
1158 else | 1147 else |
1159 { | 1148 { |
1160 Lisp_Object color = (w ? WINDOW_FACE_CACHEL_BACKGROUND (w, findex) : | 1149 Lisp_Object color = (w ? WINDOW_FACE_CACHEL_BACKGROUND (w, findex) : |
1161 FACE_BACKGROUND (Vdefault_face, locale)); | 1150 FACE_BACKGROUND (Vdefault_face, locale)); |
1162 mswindows_update_gc(FRAME_MSWINDOWS_DC(f), Qnil, Qnil, color, Qnil, Qnil); | 1151 mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, color, Qnil); |
1163 ExtTextOut (FRAME_MSWINDOWS_DC(f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); | 1152 ExtTextOut (FRAME_MSWINDOWS_DC (f), 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL); |
1164 } | 1153 } |
1165 | 1154 |
1166 #ifdef HAVE_SCROLLBARS | 1155 #ifdef HAVE_SCROLLBARS |
1167 if (WINDOWP (locale)) | 1156 if (WINDOWP (locale)) |
1168 mswindows_redisplay_deadbox_maybe (w, &rect); | 1157 mswindows_redisplay_deadbox_maybe (w, &rect); |