diff options
Diffstat (limited to 'src/quicktemplates2/qquickapplicationwindow.cpp')
-rw-r--r-- | src/quicktemplates2/qquickapplicationwindow.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp index ff062259..a6523553 100644 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ b/src/quicktemplates2/qquickapplicationwindow.cpp @@ -36,7 +36,7 @@ #include "qquickapplicationwindow_p.h" #include "qquickoverlay_p.h" -#include "qquickpopup_p.h" +#include "qquickpopup_p_p.h" #include "qquickcontrol_p_p.h" #include "qquicktextarea_p.h" #include "qquicktextfield_p.h" @@ -179,6 +179,8 @@ public: void _q_updateActiveFocus(); void setActiveFocusControl(QQuickItem *item); + static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); + bool complete; QQuickItem *background; QQuickItem *contentItem; @@ -268,7 +270,6 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f) QQuickControlPrivate::updateFontRecur(q->QQuickWindow::contentItem(), f); - // TODO: internal QQuickPopupManager that provides reliable access to all QQuickPopup instances const QList<QQuickPopup *> popups = q->findChildren<QQuickPopup *>(); for (QQuickPopup *popup : popups) QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->inheritFont(f); @@ -340,6 +341,15 @@ void QQuickApplicationWindowPrivate::setActiveFocusControl(QQuickItem *control) } } +void QQuickApplicationWindowPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) +{ + QQuickItemPrivate::data_append(prop, obj); + + // associate "top-level" popups with the window as soon as they are added to the default property + if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(obj)) + QQuickPopupPrivate::get(popup)->setWindow(static_cast<QQuickApplicationWindow *>(prop->data)); +} + QQuickApplicationWindow::QQuickApplicationWindow(QWindow *parent) : QQuickWindowQmlImpl(parent), d_ptr(new QQuickApplicationWindowPrivate) { @@ -539,7 +549,11 @@ void QQuickApplicationWindow::setFooter(QQuickItem *footer) */ QQmlListProperty<QObject> QQuickApplicationWindow::contentData() { - return QQuickItemPrivate::get(contentItem())->data(); + return QQmlListProperty<QObject>(contentItem(), this, + QQuickApplicationWindowPrivate::contentData_append, + QQuickItemPrivate::data_count, + QQuickItemPrivate::data_at, + QQuickItemPrivate::data_clear); } /*! @@ -670,7 +684,6 @@ void QQuickApplicationWindow::resetFont() setFont(QFont()); } - /*! \qmlproperty Locale QtQuick.Controls::ApplicationWindow::locale |