]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/new_gui.cxx
don't destroy iterated map entries; delete _menubar; restore closed
[flightgear.git] / src / GUI / new_gui.cxx
index f45b17ba761e5c3ec3a2618336ba6b4b26ed119c..339cc92a9016ae1bfa7307c833514206d1d76800 100644 (file)
@@ -55,21 +55,24 @@ NewGUI::reinit ()
     map<string,FGDialog *>::iterator iter;
     vector<string> dlg;
     // close all open dialogs and remember them ...
-    for (iter = _active_dialogs.begin(); iter != _active_dialogs.end(); iter++) {
+    for (iter = _active_dialogs.begin(); iter != _active_dialogs.end(); ++iter)
         dlg.push_back(iter->first);
-        closeDialog(iter->first);
-    }
+
+    unsigned int i;
+    for (i = 0; i < dlg.size(); i++)
+        closeDialog(dlg[i]);
 
     unbind();
     clear();
     setStyle();
+    delete _menubar;
     _menubar = new FGMenuBar;
     init();
     bind();
 
     // open remembered dialogs again (no nasal generated ones, unfortunately)
-//    for (unsigned int i = 0; i < dlg.size(); i++)
-//        showDialog(dlg[i]);
+    for (i = 0; i < dlg.size(); i++)
+        showDialog(dlg[i]);
 }
 
 void
@@ -219,7 +222,7 @@ NewGUI::newDialog (SGPropertyNode* props)
         return;
     }
     string name = cname;
-    if(!_active_dialogs[name])
+    if(_active_dialogs.find(name) == _active_dialogs.end())
         _dialog_props[name] = props;
 }