diff options
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 98e808bdf3..3148501006 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -1218,11 +1218,21 @@ void QCocoaWindow::windowDidChangeScreen() const bool wasRunningDisplayLink = static_cast<QCocoaScreen *>(screen())->isRunningDisplayLink(); - if (QCocoaScreen *cocoaScreen = QCocoaIntegration::instance()->screenForNSScreen(m_view.window.screen)) { - QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(window(), cocoaScreen->screen()); + if (QCocoaScreen *newScreen = QCocoaIntegration::instance()->screenForNSScreen(m_view.window.screen)) { + if (newScreen == screen()) { + // Screen properties have changed. Will be handled by + // NSApplicationDidChangeScreenParametersNotification + // in QCocoaIntegration::updateScreens(). + return; + } + + qCDebug(lcQpaWindow) << window() << "moved to" << newScreen; + QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(window(), newScreen->screen()); if (hasPendingUpdateRequest() && wasRunningDisplayLink) requestUpdate(); // Restart display-link on new screen + } else { + qCWarning(lcQpaWindow) << "Failed to get QCocoaScreen for" << m_view.window.screen; } } |