From a6d0413b972580f3bbfde8750090270b0d8d463e Mon Sep 17 00:00:00 2001
From: Jari Vetoniemi <mailroxas@gmail.com>
Date: Thu, 10 Apr 2014 20:04:06 +0300
Subject: Implement list structure, and feature for multiple selections.

---
 lib/draw/curses.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'lib/draw')

diff --git a/lib/draw/curses.c b/lib/draw/curses.c
index 0e19538..336b21d 100644
--- a/lib/draw/curses.c
+++ b/lib/draw/curses.c
@@ -120,8 +120,9 @@ static void _bmDrawCursesRender(const bmMenu *menu)
     unsigned int itemsCount;
     bmItem **items = bmMenuGetFilteredItems(menu, &itemsCount);
     for (i = (menu->index / (lines - 1)) * (lines - 1); i < itemsCount && cl < lines; ++i) {
-        int selected = (items[i] == bmMenuGetSelectedItem(menu));
-        _bmDrawCursesDrawLine((selected ? 2 : 0), cl++, "%s%s", (selected ? ">> " : "   "), items[i]->text);
+        int highlighted = (items[i] == bmMenuGetHighlightedItem(menu));
+        int color = (highlighted ? 2 : (_bmMenuItemIsSelected(menu, items[i]) ? 1 : 0));
+        _bmDrawCursesDrawLine(color, cl++, "%s%s", (highlighted ? ">> " : "   "), items[i]->text);
     }
 
     curses.move(0, titleLen + menu->cursesCursor);
@@ -200,6 +201,9 @@ static bmKey _bmDrawCursesGetKey(unsigned int *unicode)
         case 9: /* Tab */
             return BM_KEY_TAB;
 
+        case 18: /* C-r */
+            return BM_KEY_SHIFT_RETURN;
+
         case 10: /* Return */
             _bmDrawCursesEndWin();
             return BM_KEY_RETURN;
-- 
cgit v1.2.3-70-g09d2