summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoaapplication.mm
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2014-09-01 14:53:14 +0200
committerMorten Johan Sørvig <morten.sorvig@digia.com>2014-09-15 10:29:25 +0200
commit1126701f8c459b92aee8a08befaf8e4ec216fd46 (patch)
treead0b9ca333b200cf8c40e56d736e79053d072417 /src/plugins/platforms/cocoa/qcocoaapplication.mm
parentc8d2514347cedbd05f9e11822a9268f32e779dc3 (diff)
cocoa: don't override NSApplication-sendEvent if configured as AA_MacPluginApplication
Change-Id: I48cebbcb814ee8e97583c3165e7cb668077cfbad Task-number: QTBUG-40409 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaapplication.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplication.mm10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaapplication.mm b/src/plugins/platforms/cocoa/qcocoaapplication.mm
index 551a59823c..bac76357da 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplication.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplication.mm
@@ -189,6 +189,12 @@ QT_BEGIN_NAMESPACE
void qt_redirectNSApplicationSendEvent()
{
+ if (QCoreApplication::testAttribute(Qt::AA_MacPluginApplication))
+ // In a plugin we cannot chain sendEvent hooks: a second plugin could
+ // store the implementation of the first, which during the program flow
+ // can be unloaded.
+ return;
+
if ([NSApp isMemberOfClass:[QNSApplication class]]) {
// No need to change implementation since Qt
// already controls a subclass of NSApplication
@@ -209,6 +215,10 @@ void qt_redirectNSApplicationSendEvent()
void qt_resetNSApplicationSendEvent()
{
+ if (QCoreApplication::testAttribute(Qt::AA_MacPluginApplication))
+ return;
+
+
qt_cocoa_change_back_implementation([NSApplication class],
@selector(sendEvent:),
@selector(QT_MANGLE_NAMESPACE(qt_sendEvent_original):));