diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-27 08:55:08 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-27 08:55:08 +0000 |
commit | 4090753ab23242839b7afbae48f7aa2e3d64c5fc (patch) | |
tree | ff613670933b0f5fadec05f06943ab2e46ab2633 /crawl-ref/source/menu.cc | |
parent | a223e69cdfffb5528de0ec7930b02df75180174f (diff) | |
download | crawl-ref-4090753ab23242839b7afbae48f7aa2e3d64c5fc.tar.gz crawl-ref-4090753ab23242839b7afbae48f7aa2e3d64c5fc.zip |
Better fix for 1622380: now it works for all menus.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@709 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r-- | crawl-ref/source/menu.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc index 71bcfec7c9..f42d56725c 100644 --- a/crawl-ref/source/menu.cc +++ b/crawl-ref/source/menu.cc @@ -200,6 +200,22 @@ bool Menu::process_key( int keyin ) nav = true; repaint = line_down(); break; + case CK_HOME: + nav = true; + repaint = first_entry != 0; + first_entry = 0; + break; + case CK_END: + { + nav = true; + const int breakpoint = (items.size() + 1) - pagesize; + if ( first_entry < breakpoint ) + { + first_entry = breakpoint; + repaint = true; + } + break; + } default: keyin = post_process(keyin); lastch = keyin; @@ -1419,8 +1435,12 @@ bool menu_browser::process_key( int keyin ) repaint = jump_to(0); break; case CK_END: - repaint = jump_to(items.size() > 10 ? items.size() - 10 : 0); + { + const int breakpoint = (items.size() + 1) - pagesize; + if ( first_entry < breakpoint ) + repaint = jump_to(breakpoint); break; + } default: // look for it as a hotkey for ( unsigned int i = 0; i < items.size(); ++i ) |