]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/new_gui.cxx
Melchior: Make line wrapping in textboxes configurable, and enable it by default
[flightgear.git] / src / GUI / new_gui.cxx
index 8a3a12f3c9bd120f683ef1ac72c66d0844853578..fce518055bbf85648093610d04729d5d3a5479e6 100644 (file)
@@ -69,7 +69,9 @@ NewGUI::unbind ()
 void
 NewGUI::update (double delta_time_sec)
 {
-    // NO OP
+    map<string,FGDialog *>::iterator iter = _active_dialogs.begin();
+    for(/**/; iter != _active_dialogs.end(); iter++)
+        iter->second->update();
 }
 
 bool
@@ -95,9 +97,13 @@ NewGUI::closeActiveDialog ()
     // algorithm to do (delete map entries by value, not key)?  I hate
     // the STL :) -Andy
     map<string,FGDialog *>::iterator iter = _active_dialogs.begin();
-    for(/**/; iter != _active_dialogs.end(); iter++)
-        if(iter->second == _active_dialog)
+    for(/**/; iter != _active_dialogs.end(); iter++) {
+        if(iter->second == _active_dialog) {
             _active_dialogs.erase(iter);
+            // iter is no longer valid
+            break;
+        }
+    }
 
     delete _active_dialog;
     _active_dialog = 0;
@@ -179,8 +185,9 @@ NewGUI::newDialog (SGPropertyNode* props)
         SG_LOG(SG_GENERAL, SG_ALERT, "New dialog has no <name> property");
         return;
     }
-    string name = props->getStringValue("name");
-    _dialog_props[name] = props;
+    string name = cname;
+    if(!_active_dialogs[name])
+        _dialog_props[name] = props;
 }
 
 void
@@ -206,19 +213,24 @@ NewGUI::readDir (const char * path)
             SGPropertyNode * props = new SGPropertyNode;
             try {
                 readProperties(subpath, props);
-            } catch (const sg_exception &ex) {
+            } catch (const sg_exception &) {
                 SG_LOG(SG_INPUT, SG_ALERT, "Error parsing dialog "
                        << subpath);
                 delete props;
                 continue;
             }
-            if (!props->hasValue("name")) {
+            SGPropertyNode *nameprop = props->getNode("name");
+            if (!nameprop) {
                 SG_LOG(SG_INPUT, SG_WARN, "dialog " << subpath
                    << " has no name; skipping.");
                 delete props;
                 continue;
             }
-            newDialog(props);
+            string name = nameprop->getStringValue();
+            if (_dialog_props[name])
+                delete (SGPropertyNode *)_dialog_props[name];
+
+            _dialog_props[name] = props;
         }
     }
     ulCloseDir(dir);