From 3caa93e319499e77f63e25b2ef4a15c276815ca8 Mon Sep 17 00:00:00 2001 From: Shawn Betts Date: Thu, 30 Apr 2009 12:50:26 -0700 Subject: fix 'set fgcolor' for xft. Change screen's ft_font and color slots to xft_font and xft_color. --- src/actions.c | 11 +++++++++-- src/data.h | 4 ++-- src/globals.c | 8 ++++---- src/globals.h | 4 ++-- src/main.c | 6 +++--- src/screen.c | 15 +++++++-------- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/actions.c b/src/actions.c index da14648..0f093a6 100644 --- a/src/actions.c +++ b/src/actions.c @@ -3707,8 +3707,8 @@ set_font (struct cmdarg **args) if (font == NULL) return cmdret_new (RET_FAILURE, "deffont: unknown font"); - XftFontClose (dpy, s->ft_font); - s->ft_font = font; + XftFontClose (dpy, s->xft_font); + s->xft_font = font; #else XFontSet font; @@ -3993,6 +3993,13 @@ set_fgcolor (struct cmdarg **args) XSetWindowBorder (dpy, screens[i].frame_window, color.pixel); XSetWindowBorder (dpy, screens[i].help_window, color.pixel); +#ifdef USE_XFT_FONT + if (!XftColorAllocName (dpy, DefaultVisual (dpy, screens[i].screen_num), + DefaultColormap (dpy, screens[i].screen_num), + ARG_STRING(0), &screens[i].xft_color)) + return cmdret_new (RET_FAILURE, "deffgcolor: unknown color"); +#endif + free (defaults.fgcolor_string); defaults.fgcolor_string = xstrdup (ARG_STRING(0)); } diff --git a/src/data.h b/src/data.h index a7785de..947b571 100644 --- a/src/data.h +++ b/src/data.h @@ -177,8 +177,8 @@ struct rp_screen int current_frame; #ifdef USE_XFT_FONT - XftFont *ft_font; - XftColor color; + XftFont *xft_font; + XftColor xft_color; #endif }; diff --git a/src/globals.c b/src/globals.c index 9638996..f21195f 100644 --- a/src/globals.c +++ b/src/globals.c @@ -278,14 +278,14 @@ rp_draw_string (rp_screen *s, Drawable d, GC gc, int x, int y, char *string, int length = strlen (string); #ifdef USE_XFT_FONT - if (s->ft_font) + if (s->xft_font) { XftDraw *draw; draw = XftDrawCreate (dpy, d, DefaultVisual (dpy, s->screen_num), DefaultColormap (dpy, s->screen_num)); if (draw) { - XftDrawString8 (draw, &s->color, s->ft_font, x, y, (FcChar8*) string, length); + XftDrawString8 (draw, &s->xft_color, s->xft_font, x, y, (FcChar8*) string, length); XftDrawDestroy (draw); } else @@ -303,10 +303,10 @@ rp_text_width (rp_screen *s, XFontSet font, char *string, int count) count = strlen (string); #ifdef USE_XFT_FONT - if (s->ft_font) + if (s->xft_font) { XGlyphInfo extents; - XftTextExtents8 (dpy, s->ft_font, (FcChar8*) string, count, &extents); + XftTextExtents8 (dpy, s->xft_font, (FcChar8*) string, count, &extents); return extents.xOff; } else diff --git a/src/globals.h b/src/globals.h index 881d3e4..452cf0d 100644 --- a/src/globals.h +++ b/src/globals.h @@ -30,8 +30,8 @@ #ifdef USE_XFT_FONT #include -#define FONT_HEIGHT(s) ((s)->ft_font->ascent + (s)->ft_font->descent) -#define FONT_ASCENT(s) ((s)->ft_font->ascent) +#define FONT_HEIGHT(s) ((s)->xft_font->ascent + (s)->xft_font->descent) +#define FONT_ASCENT(s) ((s)->xft_font->ascent) #else diff --git a/src/main.c b/src/main.c index a90ccf2..3c05152 100644 --- a/src/main.c +++ b/src/main.c @@ -774,11 +774,11 @@ free_screen (rp_screen *s) XDestroyWindow (dpy, s->help_window); #ifdef USE_XFT_FONT - if (s->ft_font) + if (s->xft_font) { XftColorFree (dpy, DefaultVisual (dpy, s->screen_num), - DefaultColormap (dpy, s->screen_num), &s->color); - XftFontClose (dpy, s->ft_font); + DefaultColormap (dpy, s->screen_num), &s->xft_color); + XftFontClose (dpy, s->xft_font); } #endif diff --git a/src/screen.c b/src/screen.c index b3b9840..ed7376a 100644 --- a/src/screen.c +++ b/src/screen.c @@ -344,22 +344,21 @@ init_screen (rp_screen *s, int screen_num) #ifdef USE_XFT_FONT { - XRenderColor rc = {0, 0, 0, 0xFFFF}; - - if (!XftColorAllocValue (dpy, DefaultVisual (dpy, screen_num), - DefaultColormap (dpy, screen_num), &rc, &s->color)) + if (!XftColorAllocName (dpy, DefaultVisual (dpy, screen_num), + DefaultColormap (dpy, screen_num), + defaults.fgcolor_string, &s->xft_color)) { PRINT_ERROR(("Failed to allocate font color\n")); - s->ft_font = NULL; + s->xft_font = NULL; } else { - s->ft_font = XftFontOpenName (dpy, screen_num, DEFAULT_XFT_FONT); - if (!s->ft_font) + s->xft_font = XftFontOpenName (dpy, screen_num, DEFAULT_XFT_FONT); + if (!s->xft_font) { PRINT_ERROR(("Failed to open font\n")); XftColorFree (dpy, DefaultVisual (dpy, screen_num), - DefaultColormap (dpy, screen_num), &s->color); + DefaultColormap (dpy, screen_num), &s->xft_color); } } } -- cgit v1.2.3