aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates/qquickpopup.cpp3
-rw-r--r--tests/auto/quickcontrols/qquickpopup/BLACKLIST4
-rw-r--r--tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp28
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));
}