diff options
author | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-03-27 19:39:32 +0100 |
---|---|---|
committer | Timur Pocheptsov <Timur.Pocheptsov@digia.com> | 2015-03-30 17:52:56 +0000 |
commit | 08cc9b9991ae9ab51bed5b857b6257401401ff6f (patch) | |
tree | 810260e9118d9f20729e48447f357ea4d883fb0e /src/plugins | |
parent | dce3561aa9b5e3a88149e7ce2a44674002d4aac8 (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>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenu.mm | 4 |
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 |