From 4085cf40e2496685a1bbf75fc22bb408316a7666 Mon Sep 17 00:00:00 2001
From: nehalmistry <>
Date: Wed, 27 Nov 2002 16:10:31 +0000
Subject: [PATCH] improved changing back and forth from: editor menus <-> main
 menus

---
 src/include/menus.h         |  1 +
 src/stratagus/stratagus.cpp | 16 +++++++++-------
 src/ui/menus.cpp            |  9 ++++-----
 3 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/include/menus.h b/src/include/menus.h
index 65228936f..372de8da4 100644
--- a/src/include/menus.h
+++ b/src/include/menus.h
@@ -250,6 +250,7 @@ typedef struct _menus_ {
 --	Variables
 ----------------------------------------------------------------------------*/
 
+extern int GuiGameStarted;		/// Game Started?
 extern Menu *CurrentMenu;		/// Currently processed menu
 extern char ScenSelectFullPath[1024];	/// Full path to currently selected map
 extern MapInfo *ScenSelectPudInfo;	/// MapInfo of currently selected map
diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp
index 430204c6c..69104edd2 100644
--- a/src/stratagus/stratagus.cpp
+++ b/src/stratagus/stratagus.cpp
@@ -1022,14 +1022,16 @@ global void MenuLoop(char* filename, WorldMap* map)
 		PlayMusic(MenuMusic);
 	    }
 	    EnableRedraw=RedrawMenu;
-	    if( EditorRunning ) {
-		QuitToMenu = 0;
-		ProcessMenu("menu-editor-select", 1);
-		if (QuitToMenu)
-		    return;
-	    } else {
-		ProcessMenu("menu-program-start", 1);
+
+	    GuiGameStarted = 0;
+	    while (GuiGameStarted == 0) {
+		if( EditorRunning ) {
+		    ProcessMenu("menu-editor-select", 1);
+		} else {
+		    ProcessMenu("menu-program-start", 1);
+		}
 	    }
+
 	    EnableRedraw=RedrawEverything;
 	    DebugLevel0Fn("Menu start: NetPlayers %d\n" _C_ NetPlayers);
 	    filename = CurrentMapPath;
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index 330219a41..1317f24b3 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -325,7 +325,7 @@ global _MenuFuncHash MenuFuncHash;
 extern char NameLine[];
 
 local int GameLoaded;
-local int GuiGameStarted;
+global int GuiGameStarted = 0;
 local int EditorCancelled;
 
 /**
@@ -4657,7 +4657,7 @@ local void StartEditor(void)
     }
 
     EditorRunning = 1;
-    MenuLoop(NULL, &TheMap);
+    EndMenu();
 }
 
 local void CancelEditorSelect(void)
@@ -4722,6 +4722,7 @@ local void EditorNewMap(void)
 
     *CurrentMapPath = '\0';
 
+    GuiGameStarted = 1;
     EndMenu();
 }
 
@@ -4845,9 +4846,7 @@ local void EditorMainLoadMap(void)
 	strcpy(CurrentMapPath, ScenSelectFileName);
     }
 
-    // FIXME: Use EditorRunning and main-loop.
-    EditorRunning=1;
-    EditorMainLoop();
+    GuiGameStarted = 1;
     EndMenu();
 }