aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2024-11-18 17:32:50 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2024-11-29 03:54:38 +0100
commit9f04990d9f3de93669170d73ab4d6880a56ecd4b (patch)
treee310bb5feec01c5e33aae65d221ae3d76921f12a /src
parent84bf31d2ed3b8baf3c728543a75c2b219106f961 (diff)
QQuickWidget: resize offscreen window before its content item
Overlays are positioned so that they are centered over the content item within the window. If the window has a null-size when this is computed, then the overlay ends up being misplaced, and overlay-provided services, such as modality or closing popups, stops working for parts of the UI. Fix this by resizing the offscreen window before resizing the content item. Add a second test case that verifies that the overlay geometry is as it should be, both after the initial show, and after resizing the widget. The existing resizeOverlay test doesn't use a proper QQuickOverlay, so it doesn't cover all the relevant code. Adjustment for 6.5: the test case fails for SizeViewToRootObject in 6.5 as the overlay does not follow the size of the content item in that version. Mark that as an expected failure. Fixes: QTBUG-125135 Task-number: QTBUG-115536 Change-Id: I682d87f07051d213d3bd58c1c2533c84b50a3139 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit f71ef0d8b8d25b80833228fe4e4bfa716bceb398) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9c0aa4cbb7fb50804ce4d1fd1841c49b2866a7af)
Diffstat (limited to 'src')
-rw-r--r--src/quickwidgets/qquickwidget.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index afc7e535ae..d35a65c51b 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -913,6 +913,7 @@ void QQuickWidgetPrivate::updateSize()
} else if (offscreenWindow->size().isEmpty()) {
// QQuickDeliveryAgentPrivate::deliverHoverEvent() ignores events that
// occur outside of QQuickRootItem's geometry, so we need it to match root's size.
+ offscreenWindow->resize(newSize);
offscreenWindow->contentItem()->setSize(newSize);
}
}