Windows QPA: Send screen change before geometry change
Fix bug where the device independent QWindow size was set incorrectly, due to usage of incorrect screen and scale factor. This could happen when a window's screen was set to QGuiApplication::primaryScreen() as a fallback, before QWindowsWindow::initialize() would determine the correct screen. By sending the screen change first we make sure that that QWindowSystemInterface::handleGeeometryChange() uses the correct screen for the window. Change-Id: I5520ae67a4db60903d38db856fc314c75a3c0219 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Piotr Srebrny <piotr.srebrny@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
parent
3bc80195df
commit
83779c858b
@ -1560,13 +1560,13 @@ void QWindowsWindow::initialize()
|
||||
if (w->type() != Qt::Desktop) {
|
||||
const Qt::WindowState state = w->windowState();
|
||||
const QRect obtainedGeometry(creationContext->obtainedPos, creationContext->obtainedSize);
|
||||
QPlatformScreen *obtainedScreen = screenForGeometry(obtainedGeometry);
|
||||
if (obtainedScreen && screen() != obtainedScreen)
|
||||
QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(w, obtainedScreen->screen());
|
||||
if (state != Qt::WindowMaximized && state != Qt::WindowFullScreen
|
||||
&& creationContext->requestedGeometryIn != obtainedGeometry) {
|
||||
QWindowSystemInterface::handleGeometryChange<QWindowSystemInterface::SynchronousDelivery>(w, obtainedGeometry);
|
||||
}
|
||||
QPlatformScreen *obtainedScreen = screenForGeometry(obtainedGeometry);
|
||||
if (obtainedScreen && screen() != obtainedScreen)
|
||||
QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(w, obtainedScreen->screen());
|
||||
}
|
||||
QWindowsWindow::setSavedDpi(GetDpiForWindow(handle()));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user