Fixed typo, corrected video mode menu usage.
run_menu() now supports menu_item_hook for CHOICE_MENU submenu items. Now selects the video mode chosen in the menu - it's broken right now if you enter the boot menu without asking for it (i.e. when there is no boot volume found). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8116 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
3b5e4b4978
commit
a104674fdf
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
** Distributed under the terms of the Haiku License.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -278,6 +278,8 @@ run_menu(Menu *menu)
|
|||
menu->Hide();
|
||||
|
||||
run_menu(item->Submenu());
|
||||
if (item->Target() != NULL)
|
||||
(*item->Target())(menu, item);
|
||||
|
||||
// restore current menu
|
||||
sMenuOffset = offset;
|
||||
|
@ -316,6 +318,7 @@ platform_add_menus(Menu *menu)
|
|||
switch (menu->Type()) {
|
||||
case MAIN_MENU:
|
||||
menu->AddItem(item = new MenuItem("Select fail-safe video mode", video_mode_menu()));
|
||||
item->SetTarget(video_mode_hook);
|
||||
break;
|
||||
case SAFE_MODE_MENU:
|
||||
menu->AddItem(item = new MenuItem("Don't call the BIOS"));
|
||||
|
|
|
@ -241,6 +241,59 @@ vesa_set_palette(const uint8 *palette, int32 firstIndex, int32 numEntries)
|
|||
// #pragma mark -
|
||||
|
||||
|
||||
bool
|
||||
video_mode_hook(Menu *menu, MenuItem *item)
|
||||
{
|
||||
// find selected mode
|
||||
video_mode *mode = NULL;
|
||||
|
||||
menu = item->Submenu();
|
||||
item = menu->FindMarked();
|
||||
if (item != NULL)
|
||||
mode = (video_mode *)item->Data();
|
||||
|
||||
if (mode != sMode) {
|
||||
// update standard mode
|
||||
// ToDo: update fb settings!
|
||||
sMode = mode;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Menu *
|
||||
video_mode_menu()
|
||||
{
|
||||
Menu *menu = new Menu(CHOICE_MENU, "Select Video Mode");
|
||||
MenuItem *item;
|
||||
|
||||
menu->AddItem(item = new MenuItem("Default"));
|
||||
item->SetMarked(true);
|
||||
item->Select(true);
|
||||
|
||||
menu->AddItem(new MenuItem("Standard VGA"));
|
||||
|
||||
video_mode *mode = NULL;
|
||||
while ((mode = (video_mode *)list_get_next_item(&sModeList, mode)) != NULL) {
|
||||
char label[64];
|
||||
sprintf(label, "%ldx%ld %ld bit", mode->width, mode->height, mode->bits_per_pixel);
|
||||
|
||||
menu->AddItem(item = new MenuItem(label));
|
||||
item->SetData(mode);
|
||||
}
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(item = new MenuItem("Return to main menu"));
|
||||
item->SetType(MENU_ITEM_NO_CHOICE);
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
extern "C" void
|
||||
platform_switch_to_logo(void)
|
||||
{
|
||||
|
@ -305,37 +358,6 @@ platform_switch_to_text_mode(void)
|
|||
}
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
Menu *
|
||||
video_mode_menu()
|
||||
{
|
||||
Menu *menu = new Menu(CHOICE_MENU, "Select video mode:");
|
||||
MenuItem *item;
|
||||
|
||||
menu->AddItem(item = new MenuItem("Default"));
|
||||
item->SetMarked(true);
|
||||
item->Select(true);
|
||||
|
||||
menu->AddItem(new MenuItem("Standard VGA"));
|
||||
|
||||
video_mode *mode = NULL;
|
||||
while ((mode = (video_mode *)list_get_next_item(&sModeList, mode)) != NULL) {
|
||||
char label[64];
|
||||
sprintf(label, "%ldx%ld %ld bit", mode->width, mode->height, mode->bits_per_pixel);
|
||||
|
||||
menu->AddItem(item = new MenuItem(label));
|
||||
item->SetData(mode);
|
||||
}
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(item = new MenuItem("Return to main manu"));
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
extern "C" status_t
|
||||
platform_init_video(void)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
/*
|
||||
** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
||||
** Distributed under the terms of the Haiku License.
|
||||
*/
|
||||
#ifndef VIDEO_H
|
||||
#define VIDEO_H
|
||||
|
||||
|
@ -5,12 +9,10 @@
|
|||
#include <SupportDefs.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
class Menu;
|
||||
class MenuItem;
|
||||
|
||||
bool video_mode_hook(Menu *menu, MenuItem *item);
|
||||
Menu *video_mode_menu();
|
||||
|
||||
extern "C"
|
||||
#endif
|
||||
status_t video_init(void);
|
||||
|
||||
#endif /* VIDEO_H */
|
||||
|
|
Loading…
Reference in New Issue