]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/FGPUIMenuBar.cxx
Support for multiple data dirs.
[flightgear.git] / src / GUI / FGPUIMenuBar.cxx
index 0f62285a1e11c897d8fbe5957b0a587d5f33c6db..b610caf01a67d08d6fc9c177996132117525d716 100644 (file)
@@ -76,8 +76,6 @@ menu_callback (puObject * object)
     mb->fireItem(object);
 }
 
-
-\f
 ////////////////////////////////////////////////////////////////////////
 // Implementation of FGPUIMenuBar.
 ////////////////////////////////////////////////////////////////////////
@@ -97,7 +95,8 @@ FGPUIMenuBar::~FGPUIMenuBar ()
 void
 FGPUIMenuBar::init ()
 {
-    delete _menuBar;            // FIXME: check if PUI owns the pointer
+    destroy_menubar();
+  
     make_menubar();
                                 // FIXME: temporary commands to get at
                                 // old, hard-coded dialogs.
@@ -178,7 +177,7 @@ FGPUIMenuBar::make_menu (SGPropertyNode * node)
                                 // Load all the bindings for this item
         vector<SGPropertyNode_ptr> bindings = item_nodes[i]->getChildren("binding");
         SGPropertyNode * dest = fgGetNode("/sim/bindings/menu", true);
-
+      
         for (unsigned int k = 0; k < bindings.size(); k++) {
             unsigned int m = 0;
             SGPropertyNode_ptr binding;
@@ -269,7 +268,7 @@ FGPUIMenuBar::destroy_menubar ()
         delete[] _char_arrays[i];
         _char_arrays[i] = 0;
     }
-
+  
                                 // Delete all the callback arrays
                                 // we were forced to keep around for
                                 // plib.
@@ -286,6 +285,10 @@ FGPUIMenuBar::destroy_menubar ()
             delete it->second[i];
     }
 
+    _menuBar = NULL;
+    _bindings.clear();
+    _char_arrays.clear();
+    _callback_arrays.clear();
     SG_LOG(SG_GENERAL, SG_BULK, "Done.");
 }