summaryrefslogtreecommitdiff
path: root/lib/renderers/curses/curses.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/renderers/curses/curses.c')
-rw-r--r--lib/renderers/curses/curses.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/renderers/curses/curses.c b/lib/renderers/curses/curses.c
index c40e833..5771afa 100644
--- a/lib/renderers/curses/curses.c
+++ b/lib/renderers/curses/curses.c
@@ -156,7 +156,6 @@ render(const struct bm_menu *menu)
init_pair(2, COLOR_RED, -1);
}
- const uint32_t lines = getmaxy(curses.stdscr);
erase();
uint32_t ncols = getmaxx(curses.stdscr);
@@ -183,11 +182,14 @@ render(const struct bm_menu *menu)
}
uint32_t count, cl = 1;
- struct bm_item **items = bm_menu_get_filtered_items(menu, &count);
- for (uint32_t i = (menu->index / (lines - 1)) * (lines - 1); i < count && cl < lines; ++i) {
- bool highlighted = (items[i] == bm_menu_get_highlighted_item(menu));
- int32_t color = (highlighted ? 2 : (bm_menu_item_is_selected(menu, items[i]) ? 1 : 0));
- draw_line(color, cl++, "%s%s", (highlighted ? ">> " : " "), (items[i]->text ? items[i]->text : ""));
+ const uint32_t lines = getmaxy(curses.stdscr);
+ if (lines > 1) {
+ struct bm_item **items = bm_menu_get_filtered_items(menu, &count);
+ for (uint32_t i = (menu->index / (lines - 1)) * (lines - 1); i < count && cl < lines; ++i) {
+ bool highlighted = (items[i] == bm_menu_get_highlighted_item(menu));
+ int32_t color = (highlighted ? 2 : (bm_menu_item_is_selected(menu, items[i]) ? 1 : 0));
+ draw_line(color, cl++, "%s%s", (highlighted ? ">> " : " "), (items[i]->text ? items[i]->text : ""));
+ }
}
move(0, title_len + (menu->curses_cursor < ccols ? menu->curses_cursor : ccols));