summary refs log tree commit diff
path: root/menu.c
diff options
context:
space:
mode:
authorokan <okan>2015-07-12 14:31:47 +0000
committerokan <okan>2015-07-12 14:31:47 +0000
commitc0f2d0cc756f5ec7076946179efe2399f026c60a (patch)
treefa885c4df0aac7121c711e55631490023ee3f3ee /menu.c
parent671671959360a30e99b6812f132b6f1f0ff0d6e6 (diff)
parent0d13b7c2205bd40d9fd4db016c8cf96f620c4f8d (diff)
downloadcwm-c0f2d0cc756f5ec7076946179efe2399f026c60a.tar.gz
cwm-c0f2d0cc756f5ec7076946179efe2399f026c60a.tar.xz
cwm-c0f2d0cc756f5ec7076946179efe2399f026c60a.zip
cvsimport
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/menu.c b/menu.c
index 211264e..7468139 100644
--- a/menu.c
+++ b/menu.c
@@ -359,18 +359,14 @@ menu_draw(struct menu_ctx *mc, struct menu_q *menuq, struct menu_q *resultq)
 	}
 
 	TAILQ_FOREACH(mi, resultq, resultentry) {
-		char *text;
-
-		if (mc->print != NULL) {
+		if (mc->print != NULL)
 			(*mc->print)(mi, mc->listing);
-			text = mi->print;
-		} else {
-			mi->print[0] = '\0';
-			text = mi->text;
-		}
+		else
+			(void)snprintf(mi->print, sizeof(mi->print),
+			    "%s", mi->text);
 
-		mc->geom.w = MAX(mc->geom.w, xu_xft_width(sc->xftfont, text,
-		    MIN(strlen(text), MENU_MAXENTRY)));
+		mc->geom.w = MAX(mc->geom.w, xu_xft_width(sc->xftfont,
+		    mi->print, MIN(strlen(mi->print), MENU_MAXENTRY)));
 		mc->geom.h += sc->xftfont->height + 1;
 		mc->num++;
 	}
@@ -411,15 +407,13 @@ menu_draw(struct menu_ctx *mc, struct menu_q *menuq, struct menu_q *resultq)
 		n = 0;
 
 	TAILQ_FOREACH(mi, resultq, resultentry) {
-		char *text = mi->print[0] != '\0' ?
-		    mi->print : mi->text;
 		int y = n * (sc->xftfont->height + 1) + sc->xftfont->ascent + 1;
 
 		/* Stop drawing when menu doesn't fit inside the screen. */
 		if (mc->geom.y + y > area.h)
 			break;
 
-		xu_xft_draw(sc, text, CWM_COLOR_MENU_FONT, 0, y);
+		xu_xft_draw(sc, mi->print, CWM_COLOR_MENU_FONT, 0, y);
 		n++;
 	}
 	if (mc->hasprompt && n > 1)
@@ -432,7 +426,6 @@ menu_draw_entry(struct menu_ctx *mc, struct menu_q *resultq,
 {
 	struct screen_ctx	*sc = mc->sc;
 	struct menu		*mi;
-	char 			*text;
 	int			 color, i = 0;
 
 	if (mc->hasprompt)
@@ -444,13 +437,12 @@ menu_draw_entry(struct menu_ctx *mc, struct menu_q *resultq,
 	if (mi == NULL)
 		return;
 
-	color = active ? CWM_COLOR_MENU_FG : CWM_COLOR_MENU_BG;
-	text = mi->print[0] != '\0' ? mi->print : mi->text;
+	color = (active) ? CWM_COLOR_MENU_FG : CWM_COLOR_MENU_BG;
 	XftDrawRect(sc->xftdraw, &sc->xftcolor[color], 0,
 	    (sc->xftfont->height + 1) * entry, mc->geom.w,
 	    (sc->xftfont->height + 1) + sc->xftfont->descent);
-	color = active ? CWM_COLOR_MENU_FONT_SEL : CWM_COLOR_MENU_FONT;
-	xu_xft_draw(sc, text, color,
+	color = (active) ? CWM_COLOR_MENU_FONT_SEL : CWM_COLOR_MENU_FONT;
+	xu_xft_draw(sc, mi->print, color,
 	    0, (sc->xftfont->height + 1) * entry + sc->xftfont->ascent + 1);
 }