diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-02-18 17:06:11 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-02-18 17:06:11 +0000 |
commit | 8e2692d7dcf7a55e083413e2eca110b7d5919976 (patch) | |
tree | fdd7de3f882f336f7df0f8df134e384ae84d6c93 /crawl-ref/source/menu.cc | |
parent | a59025b069d3d08cfa7c5ccd21d3b0ae116da71c (diff) | |
download | crawl-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.cc | 23 |
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; } |