QmlDesigner: Add Copy to 3d Context Menu

Copy action is added to the context menu of the Edit3DWidget.

Task-number: QDS-8063
Change-Id: I8d5c9eeadfeac827012b175fa12c05ef7f31c9f4
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Ali Kianian
2022-10-28 18:13:05 +03:00
parent c55ac53f3c
commit af9ec8d20a
2 changed files with 14 additions and 1 deletions

View File

@@ -174,12 +174,21 @@ void Edit3DWidget::createContextMenu()
ModelNodeOperations::editMaterial(selCtx); ModelNodeOperations::editMaterial(selCtx);
}); });
m_contextMenu->addSeparator();
m_copyAction = m_contextMenu->addAction(tr("Copy"), [&] {
QmlDesignerPlugin::instance()->currentDesignDocument()->copySelected();
});
m_deleteAction = m_contextMenu->addAction(tr("Delete"), [&] { m_deleteAction = m_contextMenu->addAction(tr("Delete"), [&] {
view()->executeInTransaction("Edit3DWidget::createContextMenu", [&] { view()->executeInTransaction("Edit3DWidget::createContextMenu", [&] {
for (ModelNode &node : m_view->selectedModelNodes()) for (ModelNode &node : m_view->selectedModelNodes())
node.destroy(); node.destroy();
}); });
}); });
m_contextMenu->addSeparator();
} }
// Called by the view to update the "create" sub-menu when the Quick3D entries are ready. // Called by the view to update the "create" sub-menu when the Quick3D entries are ready.
@@ -303,8 +312,11 @@ void Edit3DWidget::showContextMenu(const QPoint &pos, const ModelNode &modelNode
const bool isValid = modelNode.isValid(); const bool isValid = modelNode.isValid();
const bool isModel = modelNode.metaInfo().isQtQuick3DModel(); const bool isModel = modelNode.metaInfo().isQtQuick3DModel();
const bool isValidNotRoot = isValid && !modelNode.isRootNode();
m_editMaterialAction->setEnabled(isModel); m_editMaterialAction->setEnabled(isModel);
m_deleteAction->setEnabled(isValid && !modelNode.isRootNode()); m_deleteAction->setEnabled(isValidNotRoot);
m_copyAction->setEnabled(isValidNotRoot);
m_contextMenu->popup(mapToGlobal(pos)); m_contextMenu->popup(mapToGlobal(pos));
} }

View File

@@ -62,6 +62,7 @@ private:
QPointer<QMenu> m_contextMenu; QPointer<QMenu> m_contextMenu;
QPointer<QAction> m_editMaterialAction; QPointer<QAction> m_editMaterialAction;
QPointer<QAction> m_deleteAction; QPointer<QAction> m_deleteAction;
QPointer<QAction> m_copyAction;
QPointer<QMenu> m_createSubMenu; QPointer<QMenu> m_createSubMenu;
ModelNode m_contextMenuTarget; ModelNode m_contextMenuTarget;
QVector3D m_contextMenuPos3d; QVector3D m_contextMenuPos3d;