summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-29 16:55:20 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-29 16:55:20 +0000
commit2b2a5958399c551e7643237bc6b519d299bad164 (patch)
tree645554f77a7f23369028f7ba46eb7c71d07a3160 /crawl-ref/source/menu.cc
parentcf277d8cb8c333532b3db63855ef003553e412f5 (diff)
downloadcrawl-ref-2b2a5958399c551e7643237bc6b519d299bad164.tar.gz
crawl-ref-2b2a5958399c551e7643237bc6b519d299bad164.zip
Implemented 1715578: pressing '!' in the Z? screen toggles between
showing schools/success and hunger/power. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1693 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index 7b78c92b1e..e4a3ea7904 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -1382,3 +1382,32 @@ bool formatted_scroller::process_key( int keyin )
return true;
}
+
+int ToggleableMenu::pre_process(int key)
+{
+ if ( std::find(toggle_keys.begin(), toggle_keys.end(), key) !=
+ toggle_keys.end() )
+ {
+ // Toggle all menu entries
+ for ( unsigned int i = 0; i < items.size(); ++i )
+ {
+ ToggleableMenuEntry* const p =
+ dynamic_cast<ToggleableMenuEntry*>(items[i]);
+ if ( p )
+ p->toggle();
+ }
+
+ // Toggle title
+ ToggleableMenuEntry* const pt =
+ dynamic_cast<ToggleableMenuEntry*>(title);
+ if ( pt )
+ pt->toggle();
+
+ // Redraw
+ draw_menu();
+
+ // Don't further process the key
+ return 0;
+ }
+ return key;
+}