summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-27 08:55:08 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-27 08:55:08 +0000
commit4090753ab23242839b7afbae48f7aa2e3d64c5fc (patch)
treeff613670933b0f5fadec05f06943ab2e46ab2633 /crawl-ref/source/menu.cc
parenta223e69cdfffb5528de0ec7930b02df75180174f (diff)
downloadcrawl-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.cc22
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 )