diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-04-29 21:04:17 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-04-30 10:00:16 +0000 |
commit | f1f7b33959f570c40172e1335cd2940083241143 (patch) | |
tree | 84cdb31075ba5d83c4d458a88d988f8e2b757f08 /src/plugins/qmldesigner | |
parent | 06c0f74fec27fa4c23fceb1991c626fe5606637c (diff) |
QmlDesigner: Add more update options to SelectionContext
Since we add more and more actions, updating the actions might become
a bottleneck. This patch adds more fine grained control.
Actions can ignore updates that do not apply.
Change-Id: I98dadfb39a5ec7423b00bf3fc69a9707fc162cba
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner')
3 files changed, 28 insertions, 14 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp index 6876684504..dc9e10b807 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp @@ -53,7 +53,7 @@ void DesignerActionManagerView::modelAboutToBeDetached(Model *model) void DesignerActionManagerView::nodeCreated(const ModelNode &) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::NodeCreated); } void DesignerActionManagerView::nodeRemoved(const ModelNode &, const NodeAbstractProperty &, AbstractView::PropertyChangeFlags) @@ -63,17 +63,17 @@ void DesignerActionManagerView::nodeRemoved(const ModelNode &, const NodeAbstrac void DesignerActionManagerView::nodeAboutToBeReparented(const ModelNode &, const NodeAbstractProperty &, const NodeAbstractProperty &, AbstractView::PropertyChangeFlags) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::NodeHierachy); } void DesignerActionManagerView::nodeReparented(const ModelNode &, const NodeAbstractProperty &, const NodeAbstractProperty &, AbstractView::PropertyChangeFlags) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::NodeHierachy); } void DesignerActionManagerView::propertiesRemoved(const QList<AbstractProperty> &) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); } void DesignerActionManagerView::rootNodeTypeChanged(const QString &, int, int) @@ -112,7 +112,7 @@ void DesignerActionManagerView::selectedNodesChanged(const QList<ModelNode> &sel void DesignerActionManagerView::nodeOrderChanged(const NodeListProperty &, const ModelNode &, int) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::NodeHierachy); } void DesignerActionManagerView::importsChanged(const QList<Import> &, const QList<Import> &) @@ -122,27 +122,27 @@ void DesignerActionManagerView::importsChanged(const QList<Import> &, const QLis void DesignerActionManagerView::signalHandlerPropertiesChanged(const QVector<SignalHandlerProperty> &, AbstractView::PropertyChangeFlags) { - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); } void DesignerActionManagerView::variantPropertiesChanged(const QList<VariantProperty> &, AbstractView::PropertyChangeFlags propertyChangeFlag) { if (propertyChangeFlag == AbstractView::PropertiesAdded) - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); else if (hasSingleSelectedModelNode()) - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); } void DesignerActionManagerView::bindingPropertiesChanged(const QList<BindingProperty> &, AbstractView::PropertyChangeFlags propertyChangeFlag) { if (propertyChangeFlag == AbstractView::PropertiesAdded) - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); } void DesignerActionManagerView::instancePropertyChanged(const QList<QPair<ModelNode, PropertyName> > &) { if (hasSingleSelectedModelNode()) - setupContext(SelectionContext::UpdateMode::Fast); + setupContext(SelectionContext::UpdateMode::Properties); } DesignerActionManager &DesignerActionManagerView::designerActionManager() diff --git a/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp b/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp index 59a9454b09..80201b315b 100644 --- a/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp +++ b/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp @@ -124,12 +124,17 @@ bool SelectionContext::isValid() const bool SelectionContext::fastUpdate() const { - return m_updateMode == UpdateMode::Fast; + return m_updateReason != UpdateMode::Normal; } void SelectionContext::setUpdateMode(UpdateMode mode) { - m_updateMode = mode; + m_updateReason = mode; +} + +SelectionContext::UpdateMode SelectionContext::updateReason() const +{ + return m_updateReason; } } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/selectioncontext.h b/src/plugins/qmldesigner/components/componentcore/selectioncontext.h index 929bf4eebb..3fe2157788 100644 --- a/src/plugins/qmldesigner/components/componentcore/selectioncontext.h +++ b/src/plugins/qmldesigner/components/componentcore/selectioncontext.h @@ -35,7 +35,14 @@ namespace QmlDesigner { class QMLDESIGNERCORE_EXPORT SelectionContext { public: - enum class UpdateMode {Normal, Fast}; + enum class UpdateMode { + Normal, + Fast, + Properties, + NodeCreated, + NodeHierachy, + Selection + }; SelectionContext(); SelectionContext(AbstractView *view); @@ -68,13 +75,15 @@ public: bool fastUpdate() const; void setUpdateMode(UpdateMode mode); + UpdateMode updateReason() const; + private: QPointer<AbstractView> m_view; ModelNode m_targetNode; QPointF m_scenePosition; bool m_showSelectionTools = false; bool m_toggled = false; - UpdateMode m_updateMode = UpdateMode::Normal; + UpdateMode m_updateReason = UpdateMode::Normal; }; } //QmlDesigner |