Cocoa: Enable native menus.
authorMorten Sorvig <morten.sorvig@nokia.com>
Mon, 12 Sep 2011 10:31:35 +0000 (12:31 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 22 Sep 2011 07:11:45 +0000 (09:11 +0200)
Fix menu duplication bug: make QCocoaMenu::addAction
do nothing before the native menu has ben created.

Change-Id: Ifca192421f2073264de9f5faeb053008ecb8532e
Reviewed-on: http://codereview.qt-project.org/5135
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
src/plugins/platforms/cocoa/qcocoaintegration.mm
src/plugins/platforms/cocoa/qmenu_mac.mm

index e3e2042..bb17c8e 100644 (file)
@@ -83,6 +83,8 @@ QCocoaIntegration::QCocoaIntegration()
 {
     mPool = new QCocoaAutoReleasePool;
 
+    qApp->setAttribute(Qt::AA_DontUseNativeMenuBar, false);
+
     QNSApplication *cocoaApplication = [QNSApplication sharedApplication];
 
     // Applications launched from plain executables (without an app
@@ -166,14 +168,12 @@ QPlatformFontDatabase *QCocoaIntegration::fontDatabase() const
 
 QPlatformMenu *QCocoaIntegration::createPlatformMenu(QMenu *menu) const
 {
-    // return new QCocoaMenu(menu);
-    return 0;
+    return new QCocoaMenu(menu);
 }
 
 QPlatformMenuBar *QCocoaIntegration::createPlatformMenuBar(QMenuBar *menuBar) const
 {
-    //return new QCocoaMenuBar(menuBar);
-    return 0;
+    return new QCocoaMenuBar(menuBar);
 }
 
 QPlatformNativeInterface *QCocoaIntegration::nativeInterface() const
index 7ca546d..cfedf06 100644 (file)
@@ -466,6 +466,9 @@ QCocoaMenu::~QCocoaMenu()
 
 void QCocoaMenu::addAction(QAction *a, QAction *before)
 {
+    if (menu == 0)
+        return;
+
     QCocoaMenuAction *action = new QCocoaMenuAction;
     action->action = a;
     action->ignore_accel = 0;