diff options
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); } |