diff options
| author | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2025-12-15 16:14:22 +0200 |
|---|---|---|
| committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2025-12-15 16:14:22 +0200 |
| commit | b58ec3b086518da5aa573f99426235854c23e35f (patch) | |
| tree | 861a9935d8f1cdba2fdca546836a351736dbddbf /tests/auto/quickwidgets | |
| parent | 4826f86e274f1b29bd769e6790824f9e62a40f62 (diff) | |
| parent | 22032227d16c39211e2ebceef97d21f4d89c7c87 (diff) | |
Merge tag 'v6.5.8-lts-lgpl' into 6.56.5
Qt 6.5.8-lts-lgpl release
Diffstat (limited to 'tests/auto/quickwidgets')
| -rw-r--r-- | tests/auto/quickwidgets/qquickwidget/data/overlayGeometry.qml | 24 | ||||
| -rw-r--r-- | tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp | 54 |
2 files changed, 78 insertions, 0 deletions
diff --git a/tests/auto/quickwidgets/qquickwidget/data/overlayGeometry.qml b/tests/auto/quickwidgets/qquickwidget/data/overlayGeometry.qml new file mode 100644 index 0000000000..115099ee3a --- /dev/null +++ b/tests/auto/quickwidgets/qquickwidget/data/overlayGeometry.qml @@ -0,0 +1,24 @@ +import QtQuick +import QtQuick.Controls + +Rectangle +{ + objectName: "rectangle" + width: 255 + height: 381 + visible: true + + Popup + { + objectName: "popup" + anchors.centerIn: parent + modal: true + + Rectangle + { + color: "red" + width: 40 + height: 40 + } + } +} diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp index 73411e5b8a..2733f2d5bf 100644 --- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp +++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp @@ -13,6 +13,8 @@ #include <QtQuick/private/qquickmousearea_p.h> #include <QtQuick/private/qquicktaphandler_p.h> #include <QtQuickTemplates2/private/qquickbutton_p.h> +#include <QtQuickTemplates2/private/qquickoverlay_p.h> +#include <QtQuickTemplates2/private/qquickpopup_p.h> #include <QtQuickTestUtils/private/qmlutils_p.h> #include <QtQuickTestUtils/private/visualtestutils_p.h> #include <QtGui/QWindow> @@ -135,6 +137,8 @@ private slots: void touchMultipleWidgets(); void tabKey(); void resizeOverlay(); + void overlayGeometry_data(); + void overlayGeometry(); void controls(); void focusOnClick(); #if QT_CONFIG(graphicsview) @@ -875,6 +879,56 @@ void tst_qquickwidget::resizeOverlay() QCOMPARE(overlay->height(), rootItem->height()); } +/* + Overlaps with resizeOverlay, but uses a proper + Qt Quick Controls Overlay. +*/ +void tst_qquickwidget::overlayGeometry_data() +{ + QTest::addColumn<QQuickWidget::ResizeMode>("resizeMode"); + + QTest::addRow("SizeRootObjectToView") << QQuickWidget::SizeRootObjectToView; + QTest::addRow("SizeViewToRootObject") << QQuickWidget::SizeViewToRootObject; +} + +void tst_qquickwidget::overlayGeometry() +{ + QFETCH(const QQuickWidget::ResizeMode, resizeMode); + + QWidget window; + + QQuickWidget widget(testFileUrl("overlayGeometry.qml"), &window); + widget.setResizeMode(resizeMode); + + QCOMPARE(widget.status(), QQuickWidget::Ready); + const auto *rootItem = qobject_cast<QQuickItem*>(widget.rootObject()); + QVERIFY(rootItem); + const QSizeF preferredSize = rootItem->size(); + + auto *popup = rootItem->findChild<QQuickPopup *>("popup"); + QVERIFY(popup); + popup->open(); + QTRY_VERIFY(popup->isOpened()); + + const auto *overlay = QQuickOverlay::overlay(widget.quickWindow()); + QVERIFY(overlay); + + QTestPrivate::androidCompatibleShow(&window); + QVERIFY(QTest::qWaitForWindowExposed(&window)); + QCOMPARE(widget.size(), preferredSize.toSize()); + QCOMPARE(overlay->position(), QPointF(0, 0)); + QCOMPARE(overlay->size(), widget.size()); + + widget.resize((preferredSize * 2).toSize()); + QCOMPARE(overlay->position(), QPointF(0, 0)); + QEXPECT_FAIL("SizeViewToRootObject", "QTBUG-115536", Continue); + QCOMPARE(overlay->size(), widget.size()); + + // click outside the popup, make sure it closes + QTest::mouseClick(&widget, Qt::LeftButton, {}, QPoint(10, 10)); + QTRY_VERIFY(!popup->isOpened()); +} + void tst_qquickwidget::controls() { // Smoke test for having some basic Quick Controls in a scene in a QQuickWidget. |
