aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/designer
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2016-05-20 15:55:34 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2016-05-23 08:59:38 +0000
commit16067fd85c720ad531f88e08a68eddd6222770f7 (patch)
treefa6206ea549eef20335fe85b9d91c90aae3b3f38 /src/quick/designer
parent7f7e2b0c9cc8e6d4f4eb18be8e5cc4053a0d4b11 (diff)
Remove dependency of QQmlDesignerMetaObject to QQmlVMEMetaData
The constructor will use "fake" VME meta data if the provided QObject has a VME meta object - that is the behavior of the vMEMetaDataForObject(object) call. The QQmlVMEMetaObject constructor will set hasVMEMetaObject to true unconditionally. By detecting the use of the fake meta data we can restore the hasVMEMetaObject flag to what it was before. As I would like to remove the VME meta-data, this patch removes the dependency to the meta data as a way of detecting the situation where we have to restore the hasVMEMetaObject flag. Instead this is done explicitly in the factor method that calls the constructor. Change-Id: I9c5cbfbd8fb41ca65c597669ee04c1c5694dee2a Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/quick/designer')
-rw-r--r--src/quick/designer/qqmldesignermetaobject.cpp23
-rw-r--r--src/quick/designer/qqmldesignermetaobject_p.h2
2 files changed, 10 insertions, 15 deletions
diff --git a/src/quick/designer/qqmldesignermetaobject.cpp b/src/quick/designer/qqmldesignermetaobject.cpp
index 05794e262b..f4e31f73d1 100644
--- a/src/quick/designer/qqmldesignermetaobject.cpp
+++ b/src/quick/designer/qqmldesignermetaobject.cpp
@@ -79,14 +79,6 @@ struct MetaPropertyData {
QVector<QPair<QVariant, bool> > m_data;
};
-static bool constructedMetaData(const QQmlVMEMetaData* data)
-{
- return data->propertyCount == 0
- && data->aliasCount == 0
- && data->signalCount == 0
- && data->methodCount == 0;
-}
-
static QQmlVMEMetaData* fakeMetaData()
{
QQmlVMEMetaData* data = new QQmlVMEMetaData;
@@ -125,7 +117,15 @@ QQmlDesignerMetaObject* QQmlDesignerMetaObject::getNodeInstanceMetaObject(QObjec
return static_cast<QQmlDesignerMetaObject *>(parent);
// we just create one and the ownership goes automatically to the object in nodeinstance see init method
- return new QQmlDesignerMetaObject(object, engine);
+
+ QQmlData *ddata = QQmlData::get(object, false);
+
+ const bool hadVMEMetaObject = ddata ? ddata->hasVMEMetaObject : false;
+ QQmlDesignerMetaObject *mo = new QQmlDesignerMetaObject(object, engine);
+ //If our parent is not a VMEMetaObject we just set the flag to false again
+ if (ddata)
+ ddata->hasVMEMetaObject = hadVMEMetaObject;
+ return mo;
}
void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine)
@@ -148,10 +148,6 @@ void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine)
cache = m_cache;
}
- //If our parent is not a VMEMetaObject we just se the flag to false again
- if (constructedMetaData(metaData))
- QQmlData::get(object)->hasVMEMetaObject = false;
-
nodeInstanceMetaObjectList.insert(this, true);
hasAssignedMetaObjectData = true;
}
@@ -165,7 +161,6 @@ QQmlDesignerMetaObject::QQmlDesignerMetaObject(QObject *object, QQmlEngine *engi
init(object, engine);
QQmlData *ddata = QQmlData::get(object, false);
-
//Assign cache to object
if (ddata && ddata->propertyCache) {
cache->setParent(ddata->propertyCache);
diff --git a/src/quick/designer/qqmldesignermetaobject_p.h b/src/quick/designer/qqmldesignermetaobject_p.h
index c45f83dc1e..a5402ccbc4 100644
--- a/src/quick/designer/qqmldesignermetaobject_p.h
+++ b/src/quick/designer/qqmldesignermetaobject_p.h
@@ -70,7 +70,6 @@ public:
static void registerNotifyPropertyChangeCallBack(void (*callback)(QObject*, const QQuickDesignerSupport::PropertyName &propertyName));
protected:
- QQmlDesignerMetaObject(QObject *object, QQmlEngine *engine);
static QQmlDesignerMetaObject* getNodeInstanceMetaObject(QObject *object, QQmlEngine *engine);
void createNewDynamicProperty(const QString &name);
@@ -95,6 +94,7 @@ protected:
void copyTypeMetaObject();
private:
+ QQmlDesignerMetaObject(QObject *object, QQmlEngine *engine);
void init(QObject *, QQmlEngine *engine);
QPointer<QQmlContext> m_context;