*possible* fix for bugs #453 and #373
authorMiloš Klouček <m.kloucek.m@atlas.cz>
Wed, 10 Jun 2009 19:50:04 +0000 (19:50 +0000)
committerMiloš Klouček <m.kloucek.m@atlas.cz>
Wed, 10 Jun 2009 19:50:04 +0000 (19:50 +0000)
Menu is updated in mainloop so it won't stay open (because noone updates it)

SVN-Revision: 5892

src/game_session.cpp
src/gui/menu.cpp
src/mainloop.cpp
src/title.cpp
src/worldmap/worldmap.cpp

index a5f0076..09dcf5a 100644 (file)
@@ -396,8 +396,6 @@ GameSession::process_menu()
 {
   Menu* menu = Menu::current();
   if(menu) {
-    menu->update();
-
     if(menu == game_menu.get()) {
       switch (game_menu->check()) {
         case MNID_CONTINUE:
index cc062a0..e544e5f 100644 (file)
@@ -603,8 +603,11 @@ Menu::update()
 int
 Menu::check()
 {
-  if (hit_item != -1)
-    return items[hit_item]->id;
+  if (hit_item != -1) {
+    int id = items[hit_item]->id;
+    hit_item = -1;                     //Clear event when checked out.. (we would end up in a loop when we try to leave "fake" submenu like Addons or Contrib)
+    return id;
+  }
   else
     return -1;
 }
index 4b99735..e613666 100644 (file)
@@ -167,6 +167,8 @@ MainLoop::update_gamelogic(float elapsed_time)
   Scripting::update_debugger();
   Scripting::TimeScheduler::instance->update(game_time);
   current_screen->update(elapsed_time);
+  if (Menu::current() != NULL)
+       Menu::current()->update();
   if(screen_fade.get() != NULL)
     screen_fade->update(elapsed_time);
   Console::instance->update(elapsed_time);
index a187aea..2f0b7c0 100644 (file)
@@ -418,8 +418,6 @@ TitleScreen::update(float elapsed_time)
 
   Menu* menu = Menu::current();
   if(menu) {
-    menu->update();
-
     if(menu == main_menu.get()) {
       switch (main_menu->check()) {
         case MNID_STARTGAME:
index f01a0c1..94856d1 100644 (file)
@@ -577,8 +577,6 @@ WorldMap::update(float delta)
   if(!in_level) {
     Menu* menu = Menu::current();
     if(menu != NULL) {
-      menu->update();
-
       if(menu == worldmap_menu.get()) {
         switch (worldmap_menu->check())
         {