aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-04-29 21:04:17 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-04-30 10:00:16 +0000
commitf1f7b33959f570c40172e1335cd2940083241143 (patch)
tree84cdb31075ba5d83c4d458a88d988f8e2b757f08 /src/plugins/qmldesigner
parent06c0f74fec27fa4c23fceb1991c626fe5606637c (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')
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp20
-rw-r--r--src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp9
-rw-r--r--src/plugins/qmldesigner/components/componentcore/selectioncontext.h13
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