diff options
Diffstat (limited to 'src/quick/designer')
-rw-r--r-- | src/quick/designer/qqmldesignermetaobject.cpp | 17 | ||||
-rw-r--r-- | src/quick/designer/qquickdesignersupport.cpp | 20 |
2 files changed, 20 insertions, 17 deletions
diff --git a/src/quick/designer/qqmldesignermetaobject.cpp b/src/quick/designer/qqmldesignermetaobject.cpp index 46808f978b..0bfa72e9d4 100644 --- a/src/quick/designer/qqmldesignermetaobject.cpp +++ b/src/quick/designer/qqmldesignermetaobject.cpp @@ -140,9 +140,13 @@ void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine) QObjectPrivate *op = QObjectPrivate::get(object); op->metaObject = this; - //create cache - cache = m_cache = QQmlEnginePrivate::get(engine)->cache(this); - cache->addref(); + m_cache = QQmlEnginePrivate::get(engine)->cache(this); + + if (m_cache != cache) { + m_cache->addref(); + cache->release(); + cache = m_cache; + } //If our parent is not a VMEMetaObject we just se the flag to false again if (constructedMetaData(metaData)) @@ -166,17 +170,16 @@ QQmlDesignerMetaObject::QQmlDesignerMetaObject(QObject *object, QQmlEngine *engi if (ddata && ddata->propertyCache) { cache->setParent(ddata->propertyCache); cache->invalidate(engine, this); + ddata->propertyCache->release(); ddata->propertyCache = m_cache; + m_cache->addref(); } } QQmlDesignerMetaObject::~QQmlDesignerMetaObject() { - if (cache->count() > 1) // qml is crashing because the property cache is not removed from the engine - cache->release(); - else - m_type->release(); + m_type->release(); nodeInstanceMetaObjectList.remove(this); } diff --git a/src/quick/designer/qquickdesignersupport.cpp b/src/quick/designer/qquickdesignersupport.cpp index 5bb36c5192..78ed89a107 100644 --- a/src/quick/designer/qquickdesignersupport.cpp +++ b/src/quick/designer/qquickdesignersupport.cpp @@ -187,17 +187,17 @@ QTransform QQuickDesignerSupport::parentTransform(QQuickItem *referencedItem) return parentTransform; } -QString propertyNameForAnchorLine(const QQuickAnchorLine::AnchorLine &anchorLine) +QString propertyNameForAnchorLine(const QQuickAnchors::Anchor &anchorLine) { switch (anchorLine) { - case QQuickAnchorLine::Left: return QLatin1String("left"); - case QQuickAnchorLine::Right: return QLatin1String("right"); - case QQuickAnchorLine::Top: return QLatin1String("top"); - case QQuickAnchorLine::Bottom: return QLatin1String("bottom"); - case QQuickAnchorLine::HCenter: return QLatin1String("horizontalCenter"); - case QQuickAnchorLine::VCenter: return QLatin1String("verticalCenter"); - case QQuickAnchorLine::Baseline: return QLatin1String("baseline"); - case QQuickAnchorLine::Invalid: + case QQuickAnchors::LeftAnchor: return QLatin1String("left"); + case QQuickAnchors::RightAnchor: return QLatin1String("right"); + case QQuickAnchors::TopAnchor: return QLatin1String("top"); + case QQuickAnchors::BottomAnchor: return QLatin1String("bottom"); + case QQuickAnchors::HCenterAnchor: return QLatin1String("horizontalCenter"); + case QQuickAnchors::VCenterAnchor: return QLatin1String("verticalCenter"); + case QQuickAnchors::BaselineAnchor: return QLatin1String("baseline"); + case QQuickAnchors::InvalidAnchor: // fallthrough: default: return QString(); } } @@ -343,7 +343,7 @@ QPair<QString, QObject*> QQuickDesignerSupport::anchorLineTarget(QQuickItem *ite return QPair<QString, QObject*>(); QQuickAnchorLine anchorLine = metaProperty.read().value<QQuickAnchorLine>(); - if (anchorLine.anchorLine != QQuickAnchorLine::Invalid) { + if (anchorLine.anchorLine != QQuickAnchors::InvalidAnchor) { targetObject = anchorLine.item; targetName = propertyNameForAnchorLine(anchorLine.anchorLine); } |