From 2a746ff7420ed3ebdd1eef54bddef58b862b7b3c Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 18 Jan 2024 15:02:06 +0200 Subject: [PATCH] QmlDesigner: Block dragging anything under effect items Effect items created by Effect maker are not valid parents for any kind of node, so block dragging anything under them. Fixes: QDS-11690 Change-Id: I9f6c8a6360d74d04ea871c57e7696466e4b7e41c Reviewed-by: Mahmoud Badri --- .../components/navigator/navigatortreemodel.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index ed54fc4c52a..54ae98d7e4e 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -147,9 +147,6 @@ static bool isInLayoutable(NodeAbstractProperty &parentProperty) static void reparentModelNodeToNodeProperty(NodeAbstractProperty &parentProperty, const ModelNode &modelNode) { try { - if (parentProperty.parentModelNode().type().startsWith("Effects.")) - return; - if (!modelNode.hasParentProperty() || parentProperty != modelNode.parentProperty()) { if (isInLayoutable(parentProperty)) { removePosition(modelNode); @@ -550,28 +547,29 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData, if (widget) widget->setDragType(""); + ModelNode targetNode = modelNodeForIndex(dropModelIndex); + if (!targetNode.isValid() || QmlItemNode(targetNode).isEffectItem()) + return true; + if (dropModelIndex.model() == this) { if (mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) { handleItemLibraryItemDrop(mimeData, rowNumber, dropModelIndex); } else if (mimeData->hasFormat(Constants::MIME_TYPE_TEXTURE)) { const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0); - ModelNode targetNode = modelNodeForIndex(rowModelIndex); + targetNode = modelNodeForIndex(rowModelIndex); ModelNodeOperations::handleTextureDrop(mimeData, targetNode); } else if (mimeData->hasFormat(Constants::MIME_TYPE_MATERIAL)) { const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0); - ModelNode targetNode = modelNodeForIndex(rowModelIndex); + targetNode = modelNodeForIndex(rowModelIndex); ModelNodeOperations::handleMaterialDrop(mimeData, targetNode); } else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_TEXTURE)) { QByteArray filePath = mimeData->data(Constants::MIME_TYPE_BUNDLE_TEXTURE); - ModelNode targetNode(modelNodeForIndex(dropModelIndex)); if (targetNode.metaInfo().isQtQuick3DModel()) m_view->emitCustomNotification("apply_asset_to_model3D", {targetNode}, {filePath}); // To MaterialBrowserView } else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_MATERIAL)) { - ModelNode targetNode(modelNodeForIndex(dropModelIndex)); if (targetNode.isValid()) m_view->emitCustomNotification("drop_bundle_material", {targetNode}); // To ContentLibraryView } else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_EFFECT)) { - ModelNode targetNode(modelNodeForIndex(dropModelIndex)); if (targetNode.isValid()) m_view->emitCustomNotification("drop_bundle_effect", {targetNode}); // To ContentLibraryView } else if (mimeData->hasFormat(Constants::MIME_TYPE_ASSETS)) {