From 2cf76f6f1b1c915ad198315b301221c28391265d Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Thu, 2 May 2013 19:07:44 +0300
Subject: [PATCH] Pre-select current game in world creation dialog

---
 src/guiCreateWorld.cpp | 15 ++++++++++++---
 src/guiCreateWorld.h   |  4 +++-
 src/guiMainMenu.cpp    |  2 +-
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/guiCreateWorld.cpp b/src/guiCreateWorld.cpp
index 09b18fb3c..caa884bc0 100644
--- a/src/guiCreateWorld.cpp
+++ b/src/guiCreateWorld.cpp
@@ -42,13 +42,22 @@ GUICreateWorld::GUICreateWorld(gui::IGUIEnvironment* env,
 		gui::IGUIElement* parent, s32 id,
 		IMenuManager *menumgr,
 		CreateWorldDest *dest,
-		const std::vector<SubgameSpec> &games
+		const std::vector<SubgameSpec> &games,
+		const std::string &initial_game
 ):
 	GUIModalMenu(env, parent, id, menumgr),
 	m_dest(dest),
-	m_games(games)
+	m_games(games),
+	m_initial_game_i(0)
 {
 	assert(games.size() > 0);
+
+	for(size_t i=0; i<games.size(); i++){
+		if(games[i].id == initial_game){
+			m_initial_game_i = i;
+			break;
+		}
+	}
 }
 
 GUICreateWorld::~GUICreateWorld()
@@ -151,7 +160,7 @@ void GUICreateWorld::regenerateGui(v2u32 screensize)
 			os<<L"]";
 			e->addItem(os.str().c_str());
 		}
-		e->setSelected(0);
+		e->setSelected(m_initial_game_i);
 	}
 	changeCtype("");
 	{
diff --git a/src/guiCreateWorld.h b/src/guiCreateWorld.h
index d9bc3638a..2765dc2bd 100644
--- a/src/guiCreateWorld.h
+++ b/src/guiCreateWorld.h
@@ -38,7 +38,8 @@ class GUICreateWorld : public GUIModalMenu
 			gui::IGUIElement* parent, s32 id,
 			IMenuManager *menumgr,
 			CreateWorldDest *dest,
-			const std::vector<SubgameSpec> &games);
+			const std::vector<SubgameSpec> &games,
+			const std::string &initial_game);
 	~GUICreateWorld();
 	
 	void removeChildren();
@@ -56,6 +57,7 @@ class GUICreateWorld : public GUIModalMenu
 private:
 	CreateWorldDest *m_dest;
 	std::vector<SubgameSpec> m_games;
+	int m_initial_game_i;
 };
 
 #endif
diff --git a/src/guiMainMenu.cpp b/src/guiMainMenu.cpp
index 2e7fb955d..c6142d4ce 100644
--- a/src/guiMainMenu.cpp
+++ b/src/guiMainMenu.cpp
@@ -1274,7 +1274,7 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
 				} else {
 					CreateWorldDest *dest = new CreateWorldDestMainMenu(this);
 					GUICreateWorld *menu = new GUICreateWorld(env, parent, -1,
-							menumgr, dest, games);
+							menumgr, dest, games, m_data->selected_game);
 					menu->drop();
 				}
 				return true;
-- 
GitLab