diff options
-rw-r--r-- | src/quicktemplates2/qquickpopup.cpp | 18 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpopup_p.h | 2 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 30 |
3 files changed, 50 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index 8504f44d..04bee8a3 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -93,6 +93,22 @@ QT_BEGIN_NAMESPACE \labs */ +/*! + \qmlsignal void Qt.labs.controls::Popup::opened() + + This signal is emitted when the popup is opened. + + \sa closed +*/ + +/*! + \qmlsignal void Qt.labs.controls::Popup::closed() + + This signal is emitted when the popup is closed. + + \sa opened +*/ + static const QQuickItemPrivate::ChangeTypes AncestorChangeTypes = QQuickItemPrivate::Geometry | QQuickItemPrivate::Parent | QQuickItemPrivate::Children; @@ -179,6 +195,7 @@ void QQuickPopupPrivate::prepareEnterTransition(bool notify) popupItem->setVisible(true); positioner.setParentItem(parentItem); emit q->visibleChanged(); + emit q->opened(); } void QQuickPopupPrivate::prepareExitTransition() @@ -209,6 +226,7 @@ void QQuickPopupPrivate::finalizeExitTransition(bool hide) visible = false; emit q->visibleChanged(); + emit q->closed(); } QMarginsF QQuickPopupPrivate::getMargins() const diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h index 07819843..8a586c96 100644 --- a/src/quicktemplates2/qquickpopup_p.h +++ b/src/quicktemplates2/qquickpopup_p.h @@ -316,6 +316,8 @@ Q_SIGNALS: void aboutToShow(); void aboutToHide(); + void opened(); + void closed(); protected: QQuickPopup(QQuickPopupPrivate &dd, QObject *parent); diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml index 05340d18..b361e1a8 100644 --- a/tests/auto/controls/data/tst_popup.qml +++ b/tests/auto/controls/data/tst_popup.qml @@ -923,4 +923,34 @@ TestCase { control.destroy() } + + SignalSpy { + id: openedSpy + signalName: "opened" + } + + SignalSpy { + id: closedSpy + signalName: "closed" + } + + function test_openedClosed() { + var control = popupControl.createObject(testCase) + verify(control) + + openedSpy.target = control + closedSpy.target = control + + control.open() + verify(control.visible) + compare(openedSpy.count, 1) + compare(closedSpy.count, 0) + + control.close() + verify(!control.visible) + compare(openedSpy.count, 1) + compare(closedSpy.count, 1) + + control.destroy() + } } |