diff options
| -rw-r--r-- | src/quicktemplates/qquickpopup.cpp | 3 | ||||
| -rw-r--r-- | tests/auto/quickcontrols/qquickpopup/BLACKLIST | 4 | ||||
| -rw-r--r-- | tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp | 28 |
3 files changed, 18 insertions, 17 deletions
diff --git a/src/quicktemplates/qquickpopup.cpp b/src/quicktemplates/qquickpopup.cpp index 8268e43c59..359df340c9 100644 --- a/src/quicktemplates/qquickpopup.cpp +++ b/src/quicktemplates/qquickpopup.cpp @@ -3232,7 +3232,8 @@ void QQuickPopup::geometryChange(const QRectF &newGeometry, const QRectF &oldGeo { Q_D(QQuickPopup); qCDebug(lcQuickPopup) << "geometryChange called on" << this << "with newGeometry" << newGeometry << "oldGeometry" << oldGeometry; - d->reposition(); + if (!d->usePopupWindow()) + d->reposition(); if (!qFuzzyCompare(newGeometry.width(), oldGeometry.width())) { emit widthChanged(); emit availableWidthChanged(); diff --git a/tests/auto/quickcontrols/qquickpopup/BLACKLIST b/tests/auto/quickcontrols/qquickpopup/BLACKLIST index 50cd59776d..daa95ab3f6 100644 --- a/tests/auto/quickcontrols/qquickpopup/BLACKLIST +++ b/tests/auto/quickcontrols/qquickpopup/BLACKLIST @@ -24,9 +24,5 @@ opensuse-leap [cursorShape] opensuse-leap -# QTBUG-126667 -[popupWindowPositioning] -linux - [popupWindowFocus] offscreen # QTBUG-128321 diff --git a/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp b/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp index 2159bb7f8d..b0f40b163c 100644 --- a/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp +++ b/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp @@ -2519,16 +2519,21 @@ void tst_QQuickPopup::popupWindowPositioning() popup->setPopupType(QQuickPopup::Window); - popup->open(); - QTRY_VERIFY(popup->isVisible()); - QSignalSpy xSpy(popup, SIGNAL(xChanged())); QSignalSpy ySpy(popup, SIGNAL(yChanged())); + popup->open(); + QTRY_VERIFY(popup->isOpened()); + + QTRY_VERIFY(popupPrivate->popupWindow); auto *popupWindow = popupPrivate->popupWindow; - QVERIFY(popupWindow); + QVERIFY(QTest::qWaitForWindowExposed(popupPrivate->popupWindow)); + QQuickTest::qWaitForPolish(popupPrivate->popupWindow); - // x and y properties should be 50 initially + QTRY_COMPARE(xSpy.count(), 1); + QTRY_COMPARE(ySpy.count(), 1); + + // x and y properties should be 50 initially (from simplepopup.qml) const QPoint initialPos(50, 50); VERIFY_GLOBAL_POS(popup->parentItem(), popupWindow, initialPos); @@ -2538,8 +2543,8 @@ void tst_QQuickPopup::popupWindowPositioning() const QPoint secondPosition(100, 100); popup->setPosition(secondPosition.toPointF()); - QTRY_COMPARE(xSpy.count(), 1); - QCOMPARE(ySpy.count(), 1); + QTRY_COMPARE(xSpy.count(), 2); + QCOMPARE(ySpy.count(), 2); VERIFY_GLOBAL_POS(popup->parentItem(), popupWindow, secondPosition); VERIFY_LOCAL_POS(popup, secondPosition); @@ -2548,8 +2553,8 @@ void tst_QQuickPopup::popupWindowPositioning() const QPoint thirdPosition(150, 150); popupWindow->setPosition(popup->parentItem()->mapToGlobal(thirdPosition.x(), thirdPosition.y()).toPoint()); - QTRY_COMPARE(xSpy.count(), 2); - QCOMPARE(ySpy.count(), 2); + QTRY_COMPARE(xSpy.count(), 3); + QCOMPARE(ySpy.count(), 3); VERIFY_GLOBAL_POS(popup->parentItem(), popupWindow, thirdPosition); VERIFY_LOCAL_POS(popup, thirdPosition); @@ -2559,9 +2564,8 @@ void tst_QQuickPopup::popupWindowPositioning() const QPoint oldPos = window->position(); window->setPosition(oldPos + movement); - // TODO: Figure out these signals are emitted twice - // QTRY_COMPARE(xSpy.count(), 3); - // QCOMPARE(ySpy.count(), 3); + QTRY_COMPARE(xSpy.count(), 4); + QCOMPARE(ySpy.count(), 4); VERIFY_GLOBAL_POS(popup->parentItem(), popupWindow, (thirdPosition - movement)); } |
