diff options
Diffstat (limited to 'src/gui/kernel/qwindowsysteminterface.cpp')
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index fd9c627506..0be130a40d 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -278,7 +278,15 @@ void QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState */ QT_DEFINE_QPA_EVENT_HANDLER(void, handleGeometryChange, QWindow *window, const QRect &newRect, const QRect &oldRect) { + Q_ASSERT(window); QWindowSystemInterfacePrivate::GeometryChangeEvent *e = new QWindowSystemInterfacePrivate::GeometryChangeEvent(window, QHighDpi::fromNativePixels(newRect, window), QHighDpi::fromNativePixels(oldRect, window)); + if (window->handle()) { + // Persist the new geometry so that QWindow::geometry() can be queried in the resize event + window->handle()->QPlatformWindow::setGeometry(newRect); + // FIXME: This does not work during platform window creation, where the QWindow does not + // have its handle set up yet. Platforms that deliver events during window creation need + // to handle the persistence manually, e.g. by overriding geometry(). + } QWindowSystemInterfacePrivate::handleWindowSystemEvent<Delivery>(e); } |