summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qnsview.mm
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-06-03 18:29:56 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-12 10:09:11 +0200
commit7ee15bfbb815df87ae0526f105a13a591b192c76 (patch)
treef655ef605ff943aaec2c442deb8507141b3b1ec1 /src/plugins/platforms/cocoa/qnsview.mm
parent3b5954e405cfbc3dcf1564d0e9e397825c5c1e5a (diff)
Cocoa: Make sure we update internal window fullscreen state
We update the internal/synched state by assigning it its QWindow's state. Since that one is not a flag, it can only be in one state at a time, meaning that we may lose the maximized state (but we've been losing it for some time). Task-number: QTBUG-30139 Change-Id: Idf30713c6ae912cafe3bbdd7be18214cf4de34f7 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qnsview.mm')
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 10fb293ec0..529a0ccfe7 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -290,10 +290,15 @@ static QTouchDevice *touchDevice = 0;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
- if (notificationName == NSWindowDidEnterFullScreenNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowFullScreen);
- } else if (notificationName == NSWindowDidExitFullScreenNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowNoState);
+ if (notificationName == NSWindowDidEnterFullScreenNotification
+ || notificationName == NSWindowDidExitFullScreenNotification) {
+ Qt::WindowState newState = notificationName == NSWindowDidEnterFullScreenNotification ?
+ Qt::WindowFullScreen : Qt::WindowNoState;
+ QWindowSystemInterface::handleWindowStateChanged(m_window, newState);
+ // We want to read the window state back from the window,
+ // but the event we just sent may be asynchronous.
+ QWindowSystemInterface::flushWindowSystemEvents();
+ m_platformWindow->setSynchedWindowStateFromWindow();
}
}
#endif