summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index ab8f493432..e7a527a972 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -181,10 +181,13 @@ std::vector<MenuEntry *> Menu::show(bool reuse_selections)
{
cursor_control cs(false);
- if (reuse_selections)
+ if (reuse_selections) {
get_selected(&sel);
- else
+ } else {
deselect_all(false);
+ sel.clear();
+ }
+
// Lose lines for the title + room for -more- line.
pagesize = get_number_of_lines() - !!title - 1;
@@ -1275,8 +1278,10 @@ void formatted_scroller::add_item_formatted_string(const formatted_string& fs,
{
MenuEntry* me = new MenuEntry;
me->data = new formatted_string(fs);
- if ( hotkey )
+ if ( hotkey ) {
me->add_hotkey(hotkey);
+ me->quantity = 1;
+ }
add_entry(me);
}
@@ -1571,7 +1576,17 @@ bool formatted_scroller::process_key( int keyin )
break;
}
default:
- repaint = jump_to_hotkey(keyin);
+ if (is_set(MF_SINGLESELECT))
+ {
+ select_items( keyin, -1 );
+ get_selected( &sel );
+ if (sel.size() >= 1)
+ return false;
+ }
+ else
+ {
+ repaint = jump_to_hotkey(keyin);
+ }
break;
}