]> git.mxchange.org Git - flightgear.git/commitdiff
Avoid a crash when using the native menubar on Mac, due to non-static classes with...
authorJames Turner <zakalawe@mac.com>
Mon, 26 Mar 2012 16:38:09 +0000 (17:38 +0100)
committerJames Turner <zakalawe@mac.com>
Mon, 26 Mar 2012 16:38:09 +0000 (17:38 +0100)
src/GUI/FGCocoaMenuBar.mm
src/GUI/FGPUIMenuBar.cxx

index eeacee81a8cf1cfd6c84ba9d9dec1a183f887886..916195f4a44ae1870bcaddd81d8d387c99ccfe2e 100644 (file)
@@ -109,23 +109,25 @@ static void setItemShortcutFromString(NSMenuItem* item, const string& s)
   [item setKeyEquivalentModifierMask:modifiers];
 }
 
-class EnabledListener : public SGPropertyChangeListener
-{
-public:
-  EnabledListener(NSMenuItem* i) :
-    item(i)
-  {}
-  
-  
-  virtual void valueChanged(SGPropertyNode *node) 
+namespace {
+  class CocoaEnabledListener : public SGPropertyChangeListener
   {
-    BOOL b = node->getBoolValue();
-    [item setEnabled:b];
-  }
-  
-private:
-  NSMenuItem* item;
-};
+  public:
+    CocoaEnabledListener(NSMenuItem* i) :
+      item(i)
+    {}
+    
+    
+    virtual void valueChanged(SGPropertyNode *node) 
+    {
+      BOOL b = node->getBoolValue();
+      [item setEnabled:b];
+    }
+    
+  private:
+    NSMenuItem* item;
+  };
+} // of anonymous namespace
 
 FGCocoaMenuBar::CocoaMenuBarPrivate::CocoaMenuBarPrivate()
 {
@@ -173,7 +175,7 @@ void FGCocoaMenuBar::CocoaMenuBarPrivate::menuFromProps(NSMenu* menu, SGProperty
           setItemShortcutFromString(item, shortcut);
         }
         
-        n->getNode("enabled")->addChangeListener(new EnabledListener(item));
+        n->getNode("enabled")->addChangeListener(new CocoaEnabledListener(item));
         [item setTarget:delegate];
         [item setAction:@selector(itemAction:)];
       }
@@ -263,7 +265,7 @@ void FGCocoaMenuBar::init()
       n->setBoolValue("enabled", true);
     }
     
-    n->getNode("enabled")->addChangeListener(new EnabledListener(item));
+    n->getNode("enabled")->addChangeListener(new CocoaEnabledListener(item));
   }
 }
 
index a7d8ba0eb4c81e14cd41a9bdcf48b92885f86ef3..57336d284ad42cb6ea9d14f7292b38ded2182892 100644 (file)
@@ -314,7 +314,9 @@ FGPUIMenuBar::make_object_map(SGPropertyNode * node)
     }
 }
 
-struct EnabledListener : SGPropertyChangeListener {
+namespace { 
+  
+  struct EnabledListener : SGPropertyChangeListener {
     void valueChanged(SGPropertyNode *node) {
         NewGUI * gui = (NewGUI *)globals->get_subsystem("gui");
         if (!gui)
@@ -325,6 +327,8 @@ struct EnabledListener : SGPropertyChangeListener {
     }
 };
 
+} // of anonymous namespace
+
 void
 FGPUIMenuBar::add_enabled_listener(SGPropertyNode * node)
 {