macOS: Update window geometries after screen properties change
Task-number: QTBUG-69794 Task-number: QTBUG-68140 Change-Id: I4d33bc2136478d779cc4ae8170c3421d9a7557cc Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
This commit is contained in:
parent
e7063e6cc6
commit
3068b185c5
@ -138,6 +138,20 @@ void QCocoaScreen::updateGeometry()
|
|||||||
QWindowSystemInterface::handleScreenGeometryChange(screen(), geometry(), availableGeometry());
|
QWindowSystemInterface::handleScreenGeometryChange(screen(), geometry(), availableGeometry());
|
||||||
QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(), m_logicalDpi.first, m_logicalDpi.second);
|
QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(), m_logicalDpi.first, m_logicalDpi.second);
|
||||||
QWindowSystemInterface::handleScreenRefreshRateChange(screen(), m_refreshRate);
|
QWindowSystemInterface::handleScreenRefreshRateChange(screen(), m_refreshRate);
|
||||||
|
|
||||||
|
// When a screen changes its geometry, AppKit will send us a NSWindowDidMoveNotification
|
||||||
|
// for each window, resulting in calls to handleGeometryChange(), but this happens before
|
||||||
|
// the NSApplicationDidChangeScreenParametersNotification, so when we map the new geometry
|
||||||
|
// (which is correct at that point) to the screen using QCocoaScreen::mapFromNative(), we
|
||||||
|
// end up using the stale screen geometry, and the new window geometry we report is wrong.
|
||||||
|
// To make sure we finally report the correct window geometry, we need to do another pass
|
||||||
|
// of geometry reporting, now that the screen properties have been updates. FIXME: Ideally
|
||||||
|
// this would be solved by not caching the screen properties in QCocoaScreen, but that
|
||||||
|
// requires more research.
|
||||||
|
for (QWindow *window : windows()) {
|
||||||
|
if (QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow*>(window->handle()))
|
||||||
|
cocoaWindow->handleGeometryChange();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QCocoaScreen::devicePixelRatio() const
|
qreal QCocoaScreen::devicePixelRatio() const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user