Now makes sure the selected entry is visible upon entry, too.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14398 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2005-10-17 10:09:04 +00:00
parent a51b55c985
commit 19567a9917
1 changed files with 22 additions and 1 deletions

View File

@ -284,6 +284,24 @@ last_selectable_item(Menu *menu)
}
static bool
make_item_visible(Menu *menu, int32 selected)
{
if (sMenuOffset > selected
|| sMenuOffset + menu_height() <= selected) {
if (sMenuOffset > selected)
sMenuOffset = selected;
else
sMenuOffset = selected + 1 - menu_height();
draw_menu(menu);
return true;
}
return false;
}
static void
run_menu(Menu *menu)
{
@ -302,6 +320,8 @@ run_menu(Menu *menu)
item->Select(true);
}
make_item_visible(menu, selected);
while (true) {
union key key = wait_for_key();
@ -366,7 +386,8 @@ run_menu(Menu *menu)
MenuItem *item = menu->ItemAt(selected);
if (item != NULL)
item->Select(true);
make_item_visible(menu, selected);
// make sure that the new selected entry is visible
if (sMenuOffset > selected
|| sMenuOffset + menu_height() <= selected) {