Do not set an action on native submenu items on Mac
authorPasi Matilainen <pasi.matilainen@digia.com>
Mon, 2 Apr 2012 10:38:03 +0000 (13:38 +0300)
committerQt by Nokia <qt-info@nokia.com>
Wed, 6 Jun 2012 00:03:05 +0000 (02:03 +0200)
On Mac, clicking on a submenu entry triggers QMenu::triggered(QAction*)
signal, which is unexpected, and also closes the submenu, which does
not match platform behavior. This happens because native submenu items
have an action set, so fix it by not setting the action.

Task-number: QTBUG-16738
Task-number: QTBUG-10706
Change-Id: I6819999e5af35e6acab1aec035d5d85445189f11
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
src/plugins/platforms/cocoa/qcocoamenu.mm

index 9e466de..e64386c 100644 (file)
@@ -133,7 +133,8 @@ void QCocoaMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *
 void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem)
 {
     [item->nsItem() setTarget:m_delegate];
-    [item->nsItem() setAction:@selector(itemFired:)];
+    if (!item->menu())
+        [item->nsItem() setAction:@selector(itemFired:)];
 
     if (item->isMerged())
         return;