From 3e539bf997004b834e296ef1e3c8298f45e74a57 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 29 Jan 2021 10:29:04 +0100 Subject: Move implementation of functions declared in qqml.h into qqml.cpp It makes no sense to have them qqmlengine.cpp. Change-Id: I138807c7650ec7aef4c6e8833e8bac8a6f179d1c Reviewed-by: Maximilian Goldstein Reviewed-by: Andrei Golubev --- src/qml/qml/qqml.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++++ src/qml/qml/qqmlengine.cpp | 74 -------------------------------------------- 2 files changed, 76 insertions(+), 74 deletions(-) (limited to 'src/qml') diff --git a/src/qml/qml/qqml.cpp b/src/qml/qml/qqml.cpp index d4eeff90a2..bda4954bb2 100644 --- a/src/qml/qml/qqml.cpp +++ b/src/qml/qml/qqml.cpp @@ -48,11 +48,87 @@ #include #include #include +#include #include QT_BEGIN_NAMESPACE + +/*! + \internal +*/ +void qmlExecuteDeferred(QObject *object) +{ + QQmlData *data = QQmlData::get(object); + + if (data && !data->deferredData.isEmpty() && !data->wasDeleted(object)) { + QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine()); + + QQmlComponentPrivate::DeferredState state; + QQmlComponentPrivate::beginDeferred(ep, object, &state); + + // Release the reference for the deferral action (we still have one from construction) + data->releaseDeferredData(); + + QQmlComponentPrivate::completeDeferred(ep, &state); + } +} + +QQmlContext *qmlContext(const QObject *obj) +{ + return QQmlEngine::contextForObject(obj); +} + +QQmlEngine *qmlEngine(const QObject *obj) +{ + QQmlData *data = QQmlData::get(obj, false); + if (!data || !data->context) + return nullptr; + return data->context->engine(); +} + +static QObject *resolveAttachedProperties(QQmlAttachedPropertiesFunc pf, QQmlData *data, + QObject *object, bool create) +{ + if (!pf) + return nullptr; + + QObject *rv = data->hasExtendedData() ? data->attachedProperties()->value(pf) : 0; + if (rv || !create) + return rv; + + rv = pf(object); + + if (rv) + data->attachedProperties()->insert(pf, rv); + + return rv; +} + +QQmlAttachedPropertiesFunc qmlAttachedPropertiesFunction(QObject *object, + const QMetaObject *attachedMetaObject) +{ + QQmlEngine *engine = object ? qmlEngine(object) : nullptr; + return QQmlMetaType::attachedPropertiesFunc(engine ? QQmlEnginePrivate::get(engine) : nullptr, + attachedMetaObject); +} + +QObject *qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc func, bool create) +{ + if (!object) + return nullptr; + + QQmlData *data = QQmlData::get(object, create); + + // Attached properties are only on objects created by QML, + // unless explicitly requested (create==true) + if (!data) + return nullptr; + + return resolveAttachedProperties(func, data, object, create); +} + int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index ae36fde7f0..36faecaba5 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -1452,80 +1452,6 @@ void QQmlEnginePrivate::doDeleteInEngineThread() delete d; } -/*! - \internal -*/ -void qmlExecuteDeferred(QObject *object) -{ - QQmlData *data = QQmlData::get(object); - - if (data && !data->deferredData.isEmpty() && !data->wasDeleted(object)) { - QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine()); - - QQmlComponentPrivate::DeferredState state; - QQmlComponentPrivate::beginDeferred(ep, object, &state); - - // Release the reference for the deferral action (we still have one from construction) - data->releaseDeferredData(); - - QQmlComponentPrivate::completeDeferred(ep, &state); - } -} - -QQmlContext *qmlContext(const QObject *obj) -{ - return QQmlEngine::contextForObject(obj); -} - -QQmlEngine *qmlEngine(const QObject *obj) -{ - QQmlData *data = QQmlData::get(obj, false); - if (!data || !data->context) - return nullptr; - return data->context->engine(); -} - -static QObject *resolveAttachedProperties(QQmlAttachedPropertiesFunc pf, QQmlData *data, - QObject *object, bool create) -{ - if (!pf) - return nullptr; - - QObject *rv = data->hasExtendedData() ? data->attachedProperties()->value(pf) : 0; - if (rv || !create) - return rv; - - rv = pf(object); - - if (rv) - data->attachedProperties()->insert(pf, rv); - - return rv; -} - -QQmlAttachedPropertiesFunc qmlAttachedPropertiesFunction(QObject *object, - const QMetaObject *attachedMetaObject) -{ - QQmlEngine *engine = object ? qmlEngine(object) : nullptr; - return QQmlMetaType::attachedPropertiesFunc(engine ? QQmlEnginePrivate::get(engine) : nullptr, - attachedMetaObject); -} - -QObject *qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc func, bool create) -{ - if (!object) - return nullptr; - - QQmlData *data = QQmlData::get(object, create); - - // Attached properties are only on objects created by QML, - // unless explicitly requested (create==true) - if (!data) - return nullptr; - - return resolveAttachedProperties(func, data, object, create); -} - class QQmlDataExtended { public: QQmlDataExtended(); -- cgit v1.2.3