aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp4
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h9
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp22
3 files changed, 21 insertions, 14 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index 8d2b2c43c2a..0722d2d5f81 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -1988,8 +1988,8 @@ void DesignerActionManager::createDefaultDesignerActions()
QKeySequence(),
44,
&editMaterial,
- &modelHasMaterial,
- &isModel));
+ &hasEditableMaterial,
+ &isModelOrMaterial));
addDesignerAction(new ModelNodeContextMenuAction(
mergeTemplateCommandId,
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
index aec14e9d04b..a7060fcdc6c 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
@@ -64,16 +64,19 @@ inline bool addMouseAreaFillCheck(const SelectionContext &selectionContext)
return false;
}
-inline bool isModel(const SelectionContext &selectionState)
+inline bool isModelOrMaterial(const SelectionContext &selectionState)
{
ModelNode node = selectionState.currentSingleSelectedNode();
- return node.metaInfo().isQtQuick3DModel();
+ return node.metaInfo().isQtQuick3DModel() || node.metaInfo().isQtQuick3DMaterial();
}
-inline bool modelHasMaterial(const SelectionContext &selectionState)
+inline bool hasEditableMaterial(const SelectionContext &selectionState)
{
ModelNode node = selectionState.currentSingleSelectedNode();
+ if (node.metaInfo().isQtQuick3DMaterial())
+ return true;
+
BindingProperty prop = node.bindingProperty("materials");
return prop.exists() && (!prop.expression().isEmpty() || !prop.resolveToModelNodeList().empty());
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
index c24ec9aa3e1..1cb58d3c6b3 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
@@ -817,21 +817,25 @@ void editMaterial(const SelectionContext &selectionContext)
QTC_ASSERT(modelNode.isValid(), return);
- BindingProperty prop = modelNode.bindingProperty("materials");
- if (!prop.exists())
- return;
-
AbstractView *view = selectionContext.view();
ModelNode material;
- if (view->hasId(prop.expression())) {
- material = view->modelNodeForId(prop.expression());
+ if (modelNode.metaInfo().isQtQuick3DMaterial()) {
+ material = modelNode;
} else {
- QList<ModelNode> materials = prop.resolveToModelNodeList();
+ BindingProperty prop = modelNode.bindingProperty("materials");
+ if (!prop.exists())
+ return;
- if (materials.size() > 0)
- material = materials.first();
+ if (view->hasId(prop.expression())) {
+ material = view->modelNodeForId(prop.expression());
+ } else {
+ QList<ModelNode> materials = prop.resolveToModelNodeList();
+
+ if (materials.size() > 0)
+ material = materials.first();
+ }
}
if (material.isValid()) {