diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-09-29 14:07:02 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-09-29 14:08:49 +0200 |
commit | 189dc655bbb3b4f9e1e11596f5a0f4682326066d (patch) | |
tree | 67527f791542775394332c2995887994bde9adc9 /src/plugins/platforms/cocoa/qcocoaintegration.mm | |
parent | 6fd5870df0fbad0187b6d8bf7e3b12afb2e7a66f (diff) | |
parent | dfe853bff90444edf92a993e391df853780c9e8d (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/corelib/tools/qbytearray.cpp
src/gui/image/qimage.cpp
src/gui/image/qppmhandler.cpp
src/gui/kernel/qguiapplication.cpp
src/gui/painting/qpaintengine_raster.cpp
Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaintegration.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaintegration.mm | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm index 4be49ed68f..e0838cb342 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.mm +++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm @@ -137,10 +137,9 @@ void QCocoaScreen::updateGeometry() m_name = QString::fromUtf8([[localizedNames objectForKey:[[localizedNames allKeys] objectAtIndex:0]] UTF8String]); [deviceInfo release]; - QWindowSystemInterface::handleScreenGeometryChange(screen(), geometry()); + QWindowSystemInterface::handleScreenGeometryChange(screen(), geometry(), availableGeometry()); QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(), m_logicalDpi.first, m_logicalDpi.second); QWindowSystemInterface::handleScreenRefreshRateChange(screen(), m_refreshRate); - QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), availableGeometry()); } qreal QCocoaScreen::devicePixelRatio() const @@ -370,11 +369,15 @@ void QCocoaIntegration::updateScreens() return; QSet<QCocoaScreen*> remainingScreens = QSet<QCocoaScreen*>::fromList(mScreens); QList<QPlatformScreen *> siblings; - for (uint i = 0; i < [screens count]; i++) { + uint screenCount = [screens count]; + for (uint i = 0; i < screenCount; i++) { NSScreen* scr = [screens objectAtIndex:i]; CGDirectDisplayID dpy = [[[scr deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue]; // If this screen is a mirror and is not the primary one of the mirror set, ignore it. - if (CGDisplayIsInMirrorSet(dpy)) { + // Exception: The NSScreen API has been observed to a return a screen list with one + // mirrored, non-primary screen when Qt is running as a startup item. Always use the + // screen if there's only one screen in the list. + if (screenCount > 1 && CGDisplayIsInMirrorSet(dpy)) { CGDirectDisplayID primary = CGDisplayMirrorsDisplay(dpy); if (primary != kCGNullDirectDisplay && primary != dpy) continue; |