summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-02-18 17:06:11 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-02-18 17:06:11 +0000
commit8e2692d7dcf7a55e083413e2eca110b7d5919976 (patch)
treefdd7de3f882f336f7df0f8df134e384ae84d6c93 /crawl-ref/source/menu.cc
parenta59025b069d3d08cfa7c5ccd21d3b0ae116da71c (diff)
downloadcrawl-ref-8e2692d7dcf7a55e083413e2eca110b7d5919976.tar.gz
crawl-ref-8e2692d7dcf7a55e083413e2eca110b7d5919976.zip
Finally implemented by applying Paul Du Bois' latest patch. :)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3442 c06c8d41-db1a-0410-9941-cceddc491573
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;
}