diff options
-rw-r--r-- | src/templates/qquickpopup.cpp | 15 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 10 |
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 { |