summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index e0fc678656..c94b8a5df3 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -154,8 +154,15 @@ static QTouchDevice *touchDevice = 0;
if (!m_platformWindow->windowIsPopupType())
QWindowSystemInterface::handleWindowActivated(m_window);
} else if (notificationName == NSWindowDidResignKeyNotification) {
- if (!m_platformWindow->windowIsPopupType())
- QWindowSystemInterface::handleWindowActivated(0);
+ // key window will be non-nil if another window became key... do not
+ // set the active window to zero here, the new key window's
+ // NSWindowDidBecomeKeyNotification hander will change the active window
+ NSWindow *keyWindow = [NSApp keyWindow];
+ if (!keyWindow) {
+ // no new key window, go ahead and set the active window to zero
+ if (!m_platformWindow->windowIsPopupType())
+ QWindowSystemInterface::handleWindowActivated(0);
+ }
} else if (notificationName == NSWindowDidMiniaturizeNotification) {
QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowMinimized);
} else if (notificationName == NSWindowDidDeminiaturizeNotification) {