Re: cwm no blank labels

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Okan Demirmen
Date: Tuesday, February 2, 2010 - 7:10 am

On Sun 2010.01.17 at 16:05 +0100, Thomas Pfaff wrote:

hi,

i believe due to the nature of menu_filter(), you'll still run into
losing your label using just strlen().  below the least intrusive way
until we potentially look back at the menu code.

i don't use labels at all, so can you verify this fixes all your cases?

cheers,
okan

Index: calmwm.h
===================================================================
RCS file: /home/open/anoncvs/cvs/xenocara/app/cwm/calmwm.h,v
retrieving revision 1.115
diff -u -p -r1.115 calmwm.h
--- calmwm.h	27 Jan 2010 03:04:50 -0000	1.115
+++ calmwm.h	30 Jan 2010 20:14:49 -0000
@@ -320,6 +320,7 @@ struct menu {
 	char			 print[MENU_MAXENTRY + 1];
 	void			*ctx;
 	short			 dummy;
+	short			 abort;
 };
 
 TAILQ_HEAD(menu_q, menu);
Index: kbfunc.c
===================================================================
RCS file: /home/open/anoncvs/cvs/xenocara/app/cwm/kbfunc.c,v
retrieving revision 1.50
diff -u -p -r1.50 kbfunc.c
--- kbfunc.c	15 Dec 2009 04:10:42 -0000	1.50
+++ kbfunc.c	30 Jan 2010 20:36:18 -0000
@@ -400,19 +400,19 @@ kbfunc_client_label(struct client_ctx *c
 {
 	struct menu	*mi;
 	struct menu_q	 menuq;
-	char		*current;
 
 	TAILQ_INIT(&menuq);
 
-	current = cc->label;
+	/* dummy is set, so this will always return */
+	mi = menu_filter(cc->sc, &menuq, "label", cc->label, 1,
+	    search_match_text, NULL);
 
-	if ((mi = menu_filter(cc->sc, &menuq, "label", current, 1,
-	    search_match_text, NULL)) != NULL) {
+	if (!mi->abort) {
 		if (cc->label != NULL)
 			xfree(cc->label);
 		cc->label = xstrdup(mi->text);
-		xfree(mi);
 	}
+	xfree(mi);
 }
 
 void
Index: menu.c
===================================================================
RCS file: /home/open/anoncvs/cvs/xenocara/app/cwm/menu.c,v
retrieving revision 1.19
diff -u -p -r1.19 menu.c
--- menu.c	15 Dec 2009 04:10:42 -0000	1.19
+++ menu.c	30 Jan 2010 20:35:01 -0000
@@ -223,6 +223,7 @@ menu_handle_key(XEvent *e, struct menu_c
 			    mc->searchstr, sizeof(mi->text));
 			mi->dummy = 1;
 		}
+		mi->abort = 0;
 		return (mi);
 	case CTL_WIPE:
 		mc->searchstr[0] = '\0';
@@ -235,6 +236,7 @@ menu_handle_key(XEvent *e, struct menu_c
 		mi = xmalloc(sizeof *mi);
 		mi->text[0] = '\0';
 		mi->dummy = 1;
+		mi->abort = 1;
 		return (mi);
 	default:
 		break;
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
cwm no blank labels, Thomas Pfaff, (Sun Jan 17, 8:05 am)
Re: cwm no blank labels, Okan Demirmen, (Tue Feb 2, 7:10 am)
Re: cwm no blank labels, Thomas Pfaff, (Sat Feb 6, 4:42 am)
Re: cwm no blank labels, Owain Ainsworth, (Tue Feb 9, 10:24 am)