aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickpopup.cpp18
-rw-r--r--src/quicktemplates2/qquickpopup_p.h2
-rw-r--r--tests/auto/controls/data/tst_popup.qml30
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()
+ }
}