aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan2011-09-08 12:35:33 +0000
committerokan2011-09-08 12:35:33 +0000
commitce2d7e32150af2dba656d99ed0bf931645425ee7 (patch)
treec3035f9d197cd3137faf2d34230ea932335733ee
parentf62e165e708a0095e787f98912d4d2e24c0d8b01 (diff)
downloadcwm-ce2d7e32150af2dba656d99ed0bf931645425ee7.tar.gz
allow configurable menu font color; from Alexander Polakov with a tweak
from me. ok oga@
-rw-r--r--calmwm.c3
-rw-r--r--calmwm.h5
-rw-r--r--conf.c4
-rw-r--r--cwmrc.55
-rw-r--r--font.c11
-rw-r--r--parse.y9
6 files changed, 26 insertions, 11 deletions
diff --git a/calmwm.c b/calmwm.c
index 50ef2f4..7e0df51 100644
--- a/calmwm.c
+++ b/calmwm.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: calmwm.c,v 1.58 2011/07/25 15:10:24 okan Exp $
+ * $OpenBSD: calmwm.c,v 1.59 2011/09/08 12:35:33 okan Exp $
*/
#include <sys/param.h>
@@ -169,7 +169,6 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
conf_color(&Conf, sc);
group_init(sc);
- font_init(sc);
conf_font(&Conf, sc);
TAILQ_INIT(&sc->mruq);
diff --git a/calmwm.h b/calmwm.h
index c67e6c9..ec0fe45 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: calmwm.h,v 1.140 2011/09/04 16:59:31 oga Exp $
+ * $OpenBSD: calmwm.h,v 1.141 2011/09/08 12:35:33 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -86,6 +86,7 @@ enum cwmcolor {
CWM_COLOR_BORDER_UNGROUP,
CWM_COLOR_FG_MENU,
CWM_COLOR_BG_MENU,
+ CWM_COLOR_FONT,
CWM_COLOR_MAX
};
@@ -435,7 +436,7 @@ int font_descent(struct screen_ctx *);
void font_draw(struct screen_ctx *, const char *, int,
Drawable, int, int);
u_int font_height(struct screen_ctx *);
-void font_init(struct screen_ctx *);
+void font_init(struct screen_ctx *, const char *);
int font_width(struct screen_ctx *, const char *, int);
XftFont *font_make(struct screen_ctx *, const char *);
diff --git a/conf.c b/conf.c
index 85e5f0f..93bac36 100644
--- a/conf.c
+++ b/conf.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: conf.c,v 1.95 2011/09/08 12:00:49 okan Exp $
+ * $OpenBSD: conf.c,v 1.96 2011/09/08 12:35:33 okan Exp $
*/
#include <sys/param.h>
@@ -62,6 +62,7 @@ conf_gap(struct conf *c, struct screen_ctx *sc)
void
conf_font(struct conf *c, struct screen_ctx *sc)
{
+ font_init(sc, c->color[CWM_COLOR_FONT].name);
sc->font = font_make(sc, c->font);
}
@@ -72,6 +73,7 @@ static struct color color_binds[] = {
{ "red", 0 }, /* CWM_COLOR_BORDOR_UNGROUP */
{ "black", 0 }, /* CWM_COLOR_FG_MENU */
{ "white", 0 }, /* CWM_COLOR_BG_MENU */
+ { "black", 0 }, /* CWM_COLOR_FONT */
};
void
diff --git a/cwmrc.5 b/cwmrc.5
index 9896e44..d28605d 100644
--- a/cwmrc.5
+++ b/cwmrc.5
@@ -1,4 +1,4 @@
-.\" $OpenBSD: cwmrc.5,v 1.40 2011/09/08 12:07:03 okan Exp $
+.\" $OpenBSD: cwmrc.5,v 1.41 2011/09/08 12:35:33 okan Exp $
.\"
.\" Copyright (c) 2004,2005 Marius Aamodt Eriksen <marius@monkey.org>
.\"
@@ -99,6 +99,9 @@ Set the window border width to
.It Ic color activeborder Ar color
Set the color of the active border.
.Pp
+.It Ic color font Ar color
+Set menu font color.
+.Pp
.It Ic color groupborder Ar color
Set the color of the border while grouping a window.
.Pp
diff --git a/font.c b/font.c
index 1aa19cb..cebb2bd 100644
--- a/font.c
+++ b/font.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: font.c,v 1.16 2011/06/27 12:46:54 okan Exp $
+ * $OpenBSD: font.c,v 1.17 2011/09/08 12:35:33 okan Exp $
*/
#include <sys/param.h>
@@ -49,15 +49,20 @@ font_height(struct screen_ctx *sc)
}
void
-font_init(struct screen_ctx *sc)
+font_init(struct screen_ctx *sc, const char *color)
{
+ if (sc->xftdraw)
+ XftDrawDestroy(sc->xftdraw);
sc->xftdraw = XftDrawCreate(X_Dpy, sc->rootwin,
DefaultVisual(X_Dpy, sc->which), DefaultColormap(X_Dpy, sc->which));
if (sc->xftdraw == NULL)
errx(1, "XftDrawCreate");
+ if (sc->xftcolor.pixel)
+ XftColorFree(X_Dpy, DefaultVisual(X_Dpy, sc->which),
+ DefaultColormap(X_Dpy, sc->which), &sc->xftcolor);
if (!XftColorAllocName(X_Dpy, DefaultVisual(X_Dpy, sc->which),
- DefaultColormap(X_Dpy, sc->which), "black", &sc->xftcolor))
+ DefaultColormap(X_Dpy, sc->which), color, &sc->xftcolor))
errx(1, "XftColorAllocName");
}
diff --git a/parse.y b/parse.y
index dd6547c..1cddf10 100644
--- a/parse.y
+++ b/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.32 2011/09/08 12:07:03 okan Exp $ */
+/* $OpenBSD: parse.y,v 1.33 2011/09/08 12:35:33 okan Exp $ */
/*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -73,7 +73,7 @@ typedef struct {
%token COLOR SNAPDIST
%token ACTIVEBORDER INACTIVEBORDER
%token GROUPBORDER UNGROUPBORDER
-%token MENUBG MENUFG
+%token MENUBG MENUFG FONTCOLOR
%token ERROR
%token <v.string> STRING
%token <v.number> NUMBER
@@ -193,6 +193,10 @@ colors : ACTIVEBORDER STRING {
free(conf->color[CWM_COLOR_FG_MENU].name);
conf->color[CWM_COLOR_FG_MENU].name = $2;
}
+ | FONTCOLOR STRING {
+ free(conf->color[CWM_COLOR_FONT].name);
+ conf->color[CWM_COLOR_FONT].name = $2;
+ }
;
%%
@@ -232,6 +236,7 @@ lookup(char *s)
{ "borderwidth", BORDERWIDTH},
{ "color", COLOR},
{ "command", COMMAND},
+ { "font", FONTCOLOR},
{ "fontname", FONTNAME},
{ "gap", GAP},
{ "groupborder", GROUPBORDER},