diff --git a/sc2/ChangeLog b/sc2/ChangeLog index c1e084919..6aa8ec1b0 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,5 @@ Changes towards version 0.5: +- Setup menu selection doesn't reset when you quit a submenu now - Michael - Split config.alwaysgl and config.usegl so that "Use Pure Mode If Possible" persists across runs even when using a GL mode - Michael - Fixed Yehat Rebel left hand doubling up problem (bug #807) - Alex diff --git a/sc2/src/sc2code/libs/graphics/widgets.c b/sc2/src/sc2code/libs/graphics/widgets.c index 7dbce104a..60c940b6e 100644 --- a/sc2/src/sc2code/libs/graphics/widgets.c +++ b/sc2/src/sc2code/libs/graphics/widgets.c @@ -402,12 +402,19 @@ Widget_ReceiveFocusMenuScreen (WIDGET *_self, int event) dx = -1; last_x = -1; } - else + else if (event == WIDGET_EVENT_DOWN) { x = 0; dx = 1; last_x = self->num_children; } + else + { + /* Leave highlighted value the same */ + WIDGET *child = self->child[self->highlighted]; + child->receiveFocus (child, event); + return TRUE; + } for ( ; x != last_x; x += dx) { WIDGET *child = self->child[x]; diff --git a/sc2/src/sc2code/setupmenu.c b/sc2/src/sc2code/setupmenu.c index 407a363e2..2769b6fa4 100644 --- a/sc2/src/sc2code/setupmenu.c +++ b/sc2/src/sc2code/setupmenu.c @@ -503,6 +503,7 @@ quit_sub_menu (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&menu); + (*next->receiveFocus) (next, WIDGET_EVENT_SELECT); return TRUE; } (void)self; @@ -515,6 +516,7 @@ do_graphics (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&graphics_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -527,6 +529,7 @@ do_audio (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&audio_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -539,6 +542,7 @@ do_engine (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&engine_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -551,6 +555,7 @@ do_resources (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&resources_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -563,6 +568,7 @@ do_keyconfig (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&keyconfig_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -575,6 +581,7 @@ do_advanced (WIDGET *self, int event) if (event == WIDGET_EVENT_SELECT) { next = (WIDGET *)(&advanced_menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); return TRUE; } (void)self; @@ -666,6 +673,7 @@ DoSetupMenu (PSETUP_MENU_STATE pInputState) current = NULL; next = (WIDGET *)(&menu); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); pInputState->initialized = TRUE; } @@ -697,7 +705,6 @@ DoSetupMenu (PSETUP_MENU_STATE pInputState) if (current != next) { SetTransitionSource (NULL); - (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); } BatchGraphics ();