diff options
author | Liang Qi <liang.qi@qt.io> | 2018-06-07 19:10:53 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-06-07 19:10:53 +0200 |
commit | 096e37910d93f9c52976600e985c615ea36fe291 (patch) | |
tree | 713d020f4a04f03d8ca6e111055e7eebe85953a8 /src/plugins/platforms/ios | |
parent | 88eda007a3b5046999dd0b287634765efcd8934d (diff) | |
parent | a14a943f9ac3d1e85514d7fb6688c84e624ac850 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
.qmake.conf
src/corelib/kernel/qeventdispatcher_cf.mm
src/gui/kernel/qguiapplication_p.h
src/gui/kernel/qwindowsysteminterface.cpp
src/gui/kernel/qwindowsysteminterface.h
src/plugins/platforms/cocoa/qcocoawindow.mm
src/plugins/platforms/cocoa/qnswindowdelegate.mm
src/plugins/platforms/ios/qioseventdispatcher.mm
src/plugins/platforms/windows/qwindowsdrag.h
src/plugins/platforms/windows/qwindowsinternalmimedata.h
src/plugins/platforms/windows/qwindowsmime.cpp
src/plugins/platforms/winrt/qwinrtscreen.cpp
Change-Id: Ic817f265c2386e83839d2bb9ef7419cb29705246
Diffstat (limited to 'src/plugins/platforms/ios')
-rw-r--r-- | src/plugins/platforms/ios/qiosapplicationstate.mm | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/plugins/platforms/ios/qiosapplicationstate.mm b/src/plugins/platforms/ios/qiosapplicationstate.mm index 6d9bcdacbf..cc76d198f5 100644 --- a/src/plugins/platforms/ios/qiosapplicationstate.mm +++ b/src/plugins/platforms/ios/qiosapplicationstate.mm @@ -44,6 +44,7 @@ #include <qpa/qwindowsysteminterface.h> #include <QtCore/qcoreapplication.h> +#include <QtCore/private/qcore_mac_p.h> #include <QtGui/private/qguiapplication_p.h> @@ -57,7 +58,13 @@ static void qRegisterApplicationStateNotifications() // Map between notifications and corresponding application state. Note that // there's no separate notification for moving to UIApplicationStateInactive, // so we use UIApplicationWillResignActiveNotification as an intermediate. - static QMap<NSNotificationName, UIApplicationState> notifications { + using NotificationMap = QMap<NSNotificationName, UIApplicationState>; + static auto notifications = qt_apple_isApplicationExtension() ? NotificationMap{ + { NSExtensionHostWillEnterForegroundNotification, UIApplicationStateInactive }, + { NSExtensionHostDidBecomeActiveNotification, UIApplicationStateActive }, + { NSExtensionHostWillResignActiveNotification, UIApplicationStateInactive }, + { NSExtensionHostDidEnterBackgroundNotification, UIApplicationStateBackground }, + } : NotificationMap{ { UIApplicationWillEnterForegroundNotification, UIApplicationStateInactive }, { UIApplicationDidBecomeActiveNotification, UIApplicationStateActive }, { UIApplicationWillResignActiveNotification, UIApplicationStateInactive }, @@ -73,16 +80,24 @@ static void qRegisterApplicationStateNotifications() }]; } - // Initialize correct startup state, which may not be the Qt default (inactive) - UIApplicationState startupState = [UIApplication sharedApplication].applicationState; - QIOSApplicationState::handleApplicationStateChanged(startupState, QLatin1String("Application loaded")); + if (qt_apple_isApplicationExtension()) { + // Extensions are not allowed to access UIApplication, so we assume the state is active + QIOSApplicationState::handleApplicationStateChanged(UIApplicationStateActive, + QLatin1String("Extension loaded, assuming state is active")); + } else { + // Initialize correct startup state, which may not be the Qt default (inactive) + UIApplicationState startupState = [UIApplication sharedApplication].applicationState; + QIOSApplicationState::handleApplicationStateChanged(startupState, QLatin1String("Application loaded")); + } } Q_CONSTRUCTOR_FUNCTION(qRegisterApplicationStateNotifications) QIOSApplicationState::QIOSApplicationState() { - UIApplicationState startupState = [UIApplication sharedApplication].applicationState; - QIOSApplicationState::handleApplicationStateChanged(startupState, QLatin1String("Application launched")); + if (!qt_apple_isApplicationExtension()) { + UIApplicationState startupState = [UIApplication sharedApplication].applicationState; + QIOSApplicationState::handleApplicationStateChanged(startupState, QLatin1String("Application launched")); + } } void QIOSApplicationState::handleApplicationStateChanged(UIApplicationState uiState, const QString &reason) |