diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h')
-rw-r--r-- | src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h index b677258488..1c9b808ac3 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.h @@ -3,17 +3,21 @@ #pragma once -#include "qmlanchorbindingproxy.h" #include "designerpropertymap.h" -#include "propertyeditorvalue.h" #include "propertyeditorcontextobject.h" +#include "propertyeditorvalue.h" +#include "qmlanchorbindingproxy.h" #include "qmlmodelnodeproxy.h" #include "quick2propertyeditorview.h" +#include <utils/uniqueobjectptr.h> + #include <nodemetainfo.h> #include <QQmlPropertyMap> +#include <memory> + class PropertyEditorValue; namespace QmlDesigner { @@ -71,7 +75,15 @@ public: PropertyEditorView *propertyEditor); void setupInsightAttachedProperties(const QmlObjectNode &qmlObjectNode, PropertyEditorView *propertyEditor); - void setupAuxiliaryProperties(const QmlObjectNode &qmlObjectNode, PropertyEditorView *propertyEditor); + void setupAuxiliaryProperties(const QmlObjectNode &qmlObjectNode, + PropertyEditorView *propertyEditor); + + void handleInstancePropertyChangedInModelNodeProxy(const ModelNode &modelNode, + const PropertyName &propertyName); + + void handleVariantPropertyChangedInModelNodeProxy(const VariantProperty &property); + void handleBindingPropertyChangedInModelNodeProxy(const BindingProperty &property); + void handlePropertiesRemovedInModelNodeProxy(const AbstractProperty &property); static NodeMetaInfo findCommonAncestor(const ModelNode &node); @@ -92,13 +104,16 @@ private: static TypeName fixTypeNameForPanes(const TypeName &typeName); private: - Quick2PropertyEditorView *m_view; + // to avoid a crash while destructing DesignerPropertyMap in the QQmlData + // this needs be destructed after m_quickWidget->engine() is destructed + DesignerPropertyMap m_backendValuesPropertyMap; + + Utils::UniqueObjectPtr<Quick2PropertyEditorView> m_view = nullptr; QmlAnchorBindingProxy m_backendAnchorBinding; QmlModelNodeProxy m_backendModelNode; - DesignerPropertyMap m_backendValuesPropertyMap; - QScopedPointer<PropertyEditorTransaction> m_propertyEditorTransaction; - QScopedPointer<PropertyEditorValue> m_dummyPropertyEditorValue; - QScopedPointer<PropertyEditorContextObject> m_contextObject; + std::unique_ptr<PropertyEditorTransaction> m_propertyEditorTransaction; + std::unique_ptr<PropertyEditorValue> m_dummyPropertyEditorValue; + std::unique_ptr<PropertyEditorContextObject> m_contextObject; }; } //QmlDesigner |