summaryrefslogtreecommitdiff
path: root/lib/renderers/curses
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2015-01-18 02:07:30 +0200
committerJari Vetoniemi <mailroxas@gmail.com>2015-01-18 02:07:30 +0200
commitc2eabf2be13de14e0e57ad6374cceb049b8d03da (patch)
treee02e3fec7d30285d64824c681ff489eb69afaeea /lib/renderers/curses
parentf2eaf599f6bb585d1a4921f37a073ed09c619de9 (diff)
downloadbemenu-c2eabf2be13de14e0e57ad6374cceb049b8d03da.tar.gz
bemenu-c2eabf2be13de14e0e57ad6374cceb049b8d03da.tar.bz2
bemenu-c2eabf2be13de14e0e57ad6374cceb049b8d03da.zip
Make scrollbar autohideable
Diffstat (limited to 'lib/renderers/curses')
-rw-r--r--lib/renderers/curses/curses.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/renderers/curses/curses.c b/lib/renderers/curses/curses.c
index 852eb88..1f81775 100644
--- a/lib/renderers/curses/curses.c
+++ b/lib/renderers/curses/curses.c
@@ -186,11 +186,12 @@ render(const struct bm_menu *menu)
uint32_t count, cl = 1;
const uint32_t lines = getmaxy(curses.stdscr);
- const int32_t prefix_x = (menu->prefix ? bm_utf8_string_screen_width(menu->prefix) : 0);
- const int32_t offset_x = (menu->scrollbar ? 2 : 0);
if (lines > 1) {
uint32_t displayed = 0;
struct bm_item **items = bm_menu_get_filtered_items(menu, &count);
+ const bool scrollbar = (menu->scrollbar > BM_SCROLLBAR_NONE && (menu->scrollbar != BM_SCROLLBAR_AUTOHIDE || count > lines) ? true : false);
+ const int32_t offset_x = (scrollbar ? 2 : 0);
+ const int32_t prefix_x = (menu->prefix ? bm_utf8_string_screen_width(menu->prefix) : 0);
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));
@@ -204,7 +205,7 @@ render(const struct bm_menu *menu)
++displayed;
}
- if (menu->scrollbar) {
+ if (scrollbar) {
attron(COLOR_PAIR(1));
uint32_t percent = (menu->index / (float)(count - 1)) * (displayed - 1);
mvprintw(1 + percent, 0, "▒");