aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickapplicationwindow.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-06-08 09:11:39 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-06-08 09:11:39 +0200
commit38be5b605a844693bb93d24fab8c721bec273003 (patch)
treebd8f5271078bca73acb1c33d7ee6f6f5a02b6a59 /src/quicktemplates2/qquickapplicationwindow.cpp
parent20d141034b48ae73eee70743dc410d35491cd00f (diff)
parenta5f8ceee8547c3447675d1c4e70f5706bbd2bd99 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/imports/controls/doc/src/qtquickcontrols2-index.qdoc src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc src/quicktemplates2/qquickapplicationwindow.cpp src/quicktemplates2/qquickmenu.cpp src/quicktemplates2/qquickmenu_p.h src/quicktemplates2/qquickpopup.cpp tests/auto/auto.pro Change-Id: I856a022d38abd84763127539f46ef032ddc53c3d
Diffstat (limited to 'src/quicktemplates2/qquickapplicationwindow.cpp')
-rw-r--r--src/quicktemplates2/qquickapplicationwindow.cpp21
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