QQuickPopup: add reset-method for parent
Change-Id: Ia7d205bacf4da4cb13e31ab34fb62d13a77f7ddd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This commit is contained in:
parent
b9637d71b3
commit
bdebb54522
|
@ -1570,6 +1570,14 @@ void QQuickPopup::setParentItem(QQuickItem *parent)
|
|||
emit parentChanged();
|
||||
}
|
||||
|
||||
void QQuickPopup::resetParentItem()
|
||||
{
|
||||
if (QQuickWindow *window = qobject_cast<QQuickWindow *>(parent()))
|
||||
setParentItem(window->contentItem());
|
||||
else
|
||||
setParentItem(qobject_cast<QQuickItem *>(parent()));
|
||||
}
|
||||
|
||||
/*!
|
||||
\qmlproperty Item QtQuick.Controls::Popup::background
|
||||
|
||||
|
@ -2107,12 +2115,8 @@ void QQuickPopup::classBegin()
|
|||
void QQuickPopup::componentComplete()
|
||||
{
|
||||
Q_D(QQuickPopup);
|
||||
if (!parentItem()) {
|
||||
if (QQuickItem *item = qobject_cast<QQuickItem *>(parent()))
|
||||
setParentItem(item);
|
||||
else if (QQuickWindow *window = qobject_cast<QQuickWindow *>(parent()))
|
||||
setParentItem(window->contentItem());
|
||||
}
|
||||
if (!parentItem())
|
||||
resetParentItem();
|
||||
|
||||
if (d->visible && d->window)
|
||||
d->transitionManager.transitionEnter();
|
||||
|
|
|
@ -100,7 +100,7 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQml
|
|||
Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL REVISION 3)
|
||||
Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL)
|
||||
Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3)
|
||||
Q_PROPERTY(QQuickItem *parent READ parentItem WRITE setParentItem NOTIFY parentChanged FINAL)
|
||||
Q_PROPERTY(QQuickItem *parent READ parentItem WRITE setParentItem RESET resetParentItem NOTIFY parentChanged FINAL)
|
||||
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
|
||||
Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL)
|
||||
Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
|
||||
|
@ -223,6 +223,7 @@ public:
|
|||
|
||||
QQuickItem *parentItem() const;
|
||||
void setParentItem(QQuickItem *parent);
|
||||
void resetParentItem();
|
||||
|
||||
QQuickItem *background() const;
|
||||
void setBackground(QQuickItem *background);
|
||||
|
|
|
@ -407,6 +407,28 @@ void tst_popup::windowChange()
|
|||
popup.setParentItem(window.contentItem());
|
||||
QCOMPARE(popup.window(), &window);
|
||||
QCOMPARE(spy.count(), 3);
|
||||
|
||||
popup.resetParentItem();
|
||||
QVERIFY(!popup.window());
|
||||
QCOMPARE(spy.count(), 4);
|
||||
|
||||
popup.setParent(&window);
|
||||
popup.resetParentItem();
|
||||
QCOMPARE(popup.window(), &window);
|
||||
QCOMPARE(spy.count(), 5);
|
||||
|
||||
popup.setParent(this);
|
||||
popup.resetParentItem();
|
||||
QVERIFY(!popup.window());
|
||||
QCOMPARE(spy.count(), 6);
|
||||
|
||||
item.setParentItem(window.contentItem());
|
||||
popup.setParent(&item);
|
||||
popup.resetParentItem();
|
||||
QCOMPARE(popup.window(), &window);
|
||||
QCOMPARE(spy.count(), 7);
|
||||
|
||||
popup.setParent(nullptr);
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(QQuickPopup::ClosePolicy)
|
||||
|
|
Loading…
Reference in New Issue