summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-03-27 19:39:32 +0100
committerTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-03-30 17:52:56 +0000
commit08cc9b9991ae9ab51bed5b857b6257401401ff6f (patch)
tree810260e9118d9f20729e48447f357ea4d883fb0e
parentdce3561aa9b5e3a88149e7ce2a44674002d4aac8 (diff)
QCocoaMenu: Queue 'activated' signal emission
Allows catching exceptions without quitting the application. The behavior change should be unnoticeable since we can't activate the menu item from within the Qt application. Tested that the keyboard modifiers are still set when we get to the action signal handler. Change-Id: I43d0c377834450344bd3a3678e07b6631ba0b768 Task-number: QTBUG-15197 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index 867526ff52..09a4c95469 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -37,6 +37,7 @@
#include "qcocoaautoreleasepool.h"
#include <QtCore/QtDebug>
+#include <QtCore/qmetaobject.h>
#include <QtCore/private/qthread_p.h>
#include <QtGui/private/qguiapplication_p.h>
#include "qcocoaapplication.h"
@@ -124,7 +125,8 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QCocoaMenuDelegate);
QCocoaMenuItem *cocoaItem = reinterpret_cast<QCocoaMenuItem *>([item tag]);
QScopedLoopLevelCounter loopLevelCounter(QGuiApplicationPrivate::instance()->threadData);
QGuiApplicationPrivate::modifier_buttons = [QNSView convertKeyModifiers:[NSEvent modifierFlags]];
- cocoaItem->activated();
+ static QMetaMethod activatedSignal = QMetaMethod::fromSignal(&QCocoaMenuItem::activated);
+ activatedSignal.invoke(cocoaItem, Qt::QueuedConnection);
}
- (BOOL)validateMenuItem:(NSMenuItem*)menuItem