diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2017-02-14 21:51:02 +0200 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2017-02-14 21:51:02 +0200 |
commit | 8cfa530b89c9daed987d1ffd6b3481838e23997a (patch) | |
tree | 2112f130aad45b3dad13ceb033de9e55039bf739 /client/bemenu.c | |
parent | 0ff5f2017801f52789e2fa658f609abdfbd4fa28 (diff) | |
download | bemenu-8cfa530b89c9daed987d1ffd6b3481838e23997a.tar.gz bemenu-8cfa530b89c9daed987d1ffd6b3481838e23997a.tar.bz2 bemenu-8cfa530b89c9daed987d1ffd6b3481838e23997a.zip |
bemenu: Reuse code more
Diffstat (limited to 'client/bemenu.c')
-rw-r--r-- | client/bemenu.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/client/bemenu.c b/client/bemenu.c index d909a17..9fcbcdc 100644 --- a/client/bemenu.c +++ b/client/bemenu.c @@ -57,6 +57,13 @@ read_items_to_menu_from_stdin(struct bm_menu *menu) free(buffer); } +static void +item_cb(struct bm_item *item, const char *text) +{ + (void)item; // may be null + printf("%s\n", (text ? text : "")); +} + int main(int argc, char **argv) { @@ -70,22 +77,7 @@ main(int argc, char **argv) return EXIT_FAILURE; read_items_to_menu_from_stdin(menu); - bm_menu_set_highlighted_index(menu, client.selected); - - enum bm_run_result status = run_menu(menu); - - if (status == BM_RUN_RESULT_SELECTED) { - uint32_t i, count; - struct bm_item **items = bm_menu_get_selected_items(menu, &count); - for (i = 0; i < count; ++i) { - const char *text = bm_item_get_text(items[i]); - printf("%s\n", (text ? text : "")); - } - - if (!count && bm_menu_get_filter(menu)) - printf("%s\n", bm_menu_get_filter(menu)); - } - + const enum bm_run_result status = run_menu(&client, menu, item_cb); bm_menu_free(menu); return (status == BM_RUN_RESULT_SELECTED ? EXIT_SUCCESS : EXIT_FAILURE); } |