Fix world selection a bit (also fixes a main menu segfault)
authorKahrl <kahrl@gmx.net>
Wed, 8 May 2013 09:06:47 +0000 (11:06 +0200)
committerPilzAdam <pilzadam@minetest.net>
Wed, 8 May 2013 18:54:03 +0000 (20:54 +0200)
src/guiMainMenu.cpp

index 5d5ae1e903021d0cae7c34e913c4ff5d20d433d1..48e41bb816ccdedf94bf3e2acef007b1d1a70bf8 100644 (file)
@@ -726,9 +726,11 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
                        gui::IGUIListBox *e = Environment->addListBox(rect, this,
                                        GUI_ID_WORLD_LISTBOX);
                        e->setDrawBackground(true);
-                       for(std::vector<WorldSpec>::const_iterator i = m_data->worlds.begin();
-                                       i != m_data->worlds.end(); i++){
-                               e->addItem(narrow_to_wide(i->name+" ["+i->gameid+"]").c_str());
+                       m_world_indices.clear();
+                       for(size_t wi = 0; wi < m_data->worlds.size(); wi++){
+                               const WorldSpec &spec = m_data->worlds[wi];
+                               e->addItem(narrow_to_wide(spec.name+" ["+spec.gameid+"]").c_str());
+                               m_world_indices.push_back(wi);
                        }
                        e->setSelected(m_data->selected_world);
                }
@@ -1380,6 +1382,10 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
                                return true;
                        }
                }
+               if(event.GUIEvent.EventType==gui::EGET_LISTBOX_CHANGED)
+               {
+                       readInput(m_data);
+               }
                if(event.GUIEvent.EventType==gui::EGET_LISTBOX_SELECTED_AGAIN)
                {
                        switch(event.GUIEvent.Caller->getID())