Introduce a callback for cmd menu printing, special-casing 'lock' and

'term'.
This commit is contained in:
okan 2015-06-30 18:54:12 +00:00
parent ccd054aba7
commit 6e095b76d0
4 changed files with 21 additions and 6 deletions

View File

@ -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);

View File

@ -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 <sys/types.h>
@ -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);

View File

@ -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 <sys/types.h>
@ -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);

View File

@ -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 <sys/types.h>
@ -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)
{