Mercurial > hg > xemacs-beta
diff src/glyphs-x.c @ 3094:ad2f4ae9895b
[xemacs-hg @ 2005-11-26 11:45:47 by stephent]
Xft merge. <87k6ev4p8q.fsf@tleepslib.sk.tsukuba.ac.jp>
author | stephent |
---|---|
date | Sat, 26 Nov 2005 11:46:25 +0000 |
parents | 4eb2a8c07cb3 |
children | 9b4442ac18c7 |
line wrap: on
line diff
--- a/src/glyphs-x.c Fri Nov 25 22:51:38 2005 +0000 +++ b/src/glyphs-x.c Sat Nov 26 11:46:25 2005 +0000 @@ -239,7 +239,7 @@ color.green = qtable->gm[i] ? qtable->gm[i] << 8 : 0; color.blue = qtable->bm[i] ? qtable->bm[i] << 8 : 0; color.flags = DoRed | DoGreen | DoBlue; - res = allocate_nearest_color (dpy, cmap, vis, &color); + res = x_allocate_nearest_color (dpy, cmap, vis, &color); if (res > 0 && res < 3) { DO_REALLOC(*pixtbl, pixcount, n+1, unsigned long); @@ -2364,21 +2364,41 @@ bcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); lw_add_widget_value_arg (wv, XtNbackground, bcolor.pixel); + { + Lisp_Object face = IMAGE_INSTANCE_WIDGET_FACE (ii); + Lisp_Font_Instance *fi = + XFONT_INSTANCE (query_string_font (IMAGE_INSTANCE_WIDGET_TEXT (ii), + face, + domain)); + XFontStruct *fs = FONT_INSTANCE_X_FONT (fi); +#ifdef USE_XFT + XftFont *rf = FONT_INSTANCE_X_XFTFONT (fi); + + if (rf) + { + /* #### What to do about Motif? */ + lw_add_widget_value_arg (wv, XtNxftFont, (XtArgVal) rf); + } +#endif + + if (fs) + { #ifdef LWLIB_WIDGETS_MOTIF - fontList = XmFontListCreate - (FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (query_string_font - (IMAGE_INSTANCE_WIDGET_TEXT (ii), - IMAGE_INSTANCE_WIDGET_FACE (ii), - domain))), XmSTRING_DEFAULT_CHARSET); - lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal)fontList); + fontList = XmFontListCreate (fs, XmSTRING_DEFAULT_CHARSET); + lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal) fontList); #endif - lw_add_widget_value_arg - (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (query_string_font - (IMAGE_INSTANCE_WIDGET_TEXT (ii), - IMAGE_INSTANCE_WIDGET_FACE (ii), - domain)))); + lw_add_widget_value_arg (wv, XtNfont, (XtArgVal) fs); + } + +#ifdef USE_XFT + /* #### sanity check, should wrap in appropriate ERROR_CHECK macro */ + if (!rf && !fs) + warn_when_safe_lispobj + (intern ("xft"), Qdebug, + Fcons (build_string ("missing font in update_widget_face"), + Fface_name (face))); +#endif + } wv->change = VISIBLE_CHANGE; /* #### Megahack - but its just getting too complicated to do this in the right place. */