From 71d55b5fbd537c425ecee3649e183818b220d5ef Mon Sep 17 00:00:00 2001 From: okan Date: Tue, 30 Jun 2015 18:54:12 +0000 Subject: Introduce a callback for cmd menu printing, special-casing 'lock' and 'term'. --- calmwm.h | 3 ++- kbfunc.c | 4 ++-- mousefunc.c | 4 ++-- search.c | 16 +++++++++++++++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/calmwm.h b/calmwm.h index 2553dd7..dfb416d 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.295 2015/06/26 17:17:46 okan Exp $ + * $OpenBSD: calmwm.h,v 1.296 2015/06/30 18:54:12 okan Exp $ */ #ifndef _CALMWM_H_ @@ -449,6 +449,7 @@ void search_match_path_any(struct menu_q *, struct menu_q *, void search_match_text(struct menu_q *, struct menu_q *, char *); void search_print_client(struct menu *, int); +void search_print_cmd(struct menu *, int); struct geom screen_apply_gap(struct screen_ctx *, struct geom); struct screen_ctx *screen_find(Window); diff --git a/kbfunc.c b/kbfunc.c index 714d37f..872af3a 100644 --- a/kbfunc.c +++ b/kbfunc.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: kbfunc.c,v 1.109 2015/06/29 14:24:40 okan Exp $ + * $OpenBSD: kbfunc.c,v 1.110 2015/06/30 18:54:12 okan Exp $ */ #include @@ -181,7 +181,7 @@ kbfunc_menu_cmd(struct client_ctx *cc, union arg *arg) menuq_add(&menuq, cmd, "%s", cmd->name); if ((mi = menu_filter(sc, &menuq, "application", NULL, 0, - search_match_text, NULL)) != NULL) + search_match_text, search_print_cmd)) != NULL) u_spawn(((struct cmd *)mi->ctx)->path); menuq_clear(&menuq); diff --git a/mousefunc.c b/mousefunc.c index 5733f0a..10a03a5 100644 --- a/mousefunc.c +++ b/mousefunc.c @@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: mousefunc.c,v 1.92 2015/06/26 17:17:46 okan Exp $ + * $OpenBSD: mousefunc.c,v 1.93 2015/06/30 18:54:12 okan Exp $ */ #include @@ -239,7 +239,7 @@ mousefunc_menu_cmd(struct client_ctx *cc, union arg *arg) menuq_add(&menuq, cmd, "%s", cmd->name); if ((mi = menu_filter(sc, &menuq, NULL, NULL, CWM_MENU_LIST, - NULL, NULL)) != NULL) + NULL, search_print_cmd)) != NULL) u_spawn(((struct cmd *)mi->ctx)->path); menuq_clear(&menuq); diff --git a/search.c b/search.c index a4046cb..d04221d 100644 --- a/search.c +++ b/search.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: search.c,v 1.45 2015/06/30 18:42:50 okan Exp $ + * $OpenBSD: search.c,v 1.46 2015/06/30 18:54:12 okan Exp $ */ #include @@ -123,6 +123,20 @@ search_match_client(struct menu_q *menuq, struct menu_q *resultq, char *search) } } +void +search_print_cmd(struct menu *mi, int i) +{ + struct cmd *cmd = (struct cmd *)mi->ctx; + int special = 0; + + if ((strcmp(cmd->name, "lock") == 0) || + (strcmp(cmd->name, "term") == 0)) + special = 1; + + (void)snprintf(mi->print, sizeof(mi->print), + (special) ? "[%s]" : "%s", cmd->name); +} + void search_print_client(struct menu *mi, int list) { -- cgit v1.2.3-2-gb3c3