aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/templates/qquickpopup.cpp15
-rw-r--r--tests/auto/controls/data/tst_popup.qml10
2 files changed, 21 insertions, 4 deletions
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index f0866bdd..c298bd9c 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -1470,10 +1470,17 @@ bool QQuickPopup::isVisible() const
void QQuickPopup::setVisible(bool visible)
{
- if (visible)
- open();
- else
- close();
+ Q_D(QQuickPopup);
+ if (d->visible == visible)
+ return;
+
+ d->visible = visible;
+ if (d->complete) {
+ if (visible)
+ d->transitionManager.transitionEnter();
+ else
+ d->transitionManager.transitionExit();
+ }
}
/*!
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
index 0a51c138..4eba8dca 100644
--- a/tests/auto/controls/data/tst_popup.qml
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -796,6 +796,16 @@ TestCase {
control.destroy()
}
+ // QTBUG-51989
+ function test_visible() {
+ var control = popupTemplate.createObject(testCase, {visible: true})
+ verify(control)
+
+ tryCompare(control, "visible", true)
+
+ control.destroy()
+ }
+
Component {
id: overlayTest
ApplicationWindow {