diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-10-25 01:38:30 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-10-25 01:38:30 +0300 |
commit | 3f5e21a83f525586d1ee5b1bcd04cc2e50350403 (patch) | |
tree | 226cb57348ae89bc62df34cfd7ee2afe43f03c45 /lib/menu.c | |
parent | f8d97efb8f1bc5a7e764e1bb14f0e97ac36de68d (diff) | |
download | bemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.tar.gz bemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.tar.bz2 bemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.zip |
Cleanup wayland renderer and plugin support.
Diffstat (limited to 'lib/menu.c')
-rw-r--r-- | lib/menu.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -25,7 +25,7 @@ bm_menu_item_is_selected(const struct bm_menu *menu, const struct bm_item *item) } struct bm_menu* -bm_menu_new(const char *renderer) +bm_menu_new(const char *renderer, enum bm_prioritory prioritory) { struct bm_menu *menu; if (!(menu = calloc(1, sizeof(struct bm_menu)))) @@ -34,19 +34,24 @@ bm_menu_new(const char *renderer) uint32_t count; const struct bm_renderer **renderers = bm_get_renderers(&count); - bool status = false; for (uint32_t i = 0; i < count; ++i) { + if (prioritory != BM_PRIO_ANY && renderers[i]->api.prioritory != prioritory) + continue; + if (renderer && strcmp(renderer, renderers[i]->name)) continue; - if (bm_renderer_activate((struct bm_renderer*)renderers[i], menu)) { - status = true; - menu->renderer = renderers[i]; - break; + if (renderers[i]->api.prioritory == BM_PRIO_TERMINAL) { + const char *term = getenv("TERM"); + if (!term || !strlen(term)) + continue; } + + if (bm_renderer_activate((struct bm_renderer*)renderers[i], menu)) + break; } - if (!status) { + if (!menu->renderer) { bm_menu_free(menu); return NULL; } |