forked from qt-creator/qt-creator
QmlDesigner: Add Duplicate to 3d Context Menu
Duplicate action is added to the context menu of the Edit3DWidget. Task-number: QDS-8063 Change-Id: Id1347d28cd819a81e145bb0319e85d19a734090f Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -183,6 +183,10 @@ void Edit3DWidget::createContextMenu()
|
||||
|
||||
m_contextMenu->addSeparator();
|
||||
|
||||
m_duplicateAction = m_contextMenu->addAction(tr("Duplicate"), [&] {
|
||||
QmlDesignerPlugin::instance()->currentDesignDocument()->duplicateSelected();
|
||||
});
|
||||
|
||||
m_copyAction = m_contextMenu->addAction(tr("Copy"), [&] {
|
||||
QmlDesignerPlugin::instance()->currentDesignDocument()->copySelected();
|
||||
});
|
||||
@@ -374,6 +378,7 @@ void Edit3DWidget::showContextMenu(const QPoint &pos, const ModelNode &modelNode
|
||||
|
||||
m_editComponentAction->setEnabled(isSingleComponent);
|
||||
m_editMaterialAction->setEnabled(isModel);
|
||||
m_duplicateAction->setEnabled(isNotRoot);
|
||||
m_copyAction->setEnabled(isNotRoot);
|
||||
m_pasteAction->setEnabled(isPasteAvailable());
|
||||
m_deleteAction->setEnabled(isNotRoot);
|
||||
|
||||
@@ -64,6 +64,7 @@ private:
|
||||
QPointer<QMenu> m_contextMenu;
|
||||
QPointer<QAction> m_editComponentAction;
|
||||
QPointer<QAction> m_editMaterialAction;
|
||||
QPointer<QAction> m_duplicateAction;
|
||||
QPointer<QAction> m_copyAction;
|
||||
QPointer<QAction> m_pasteAction;
|
||||
QPointer<QAction> m_deleteAction;
|
||||
|
||||
@@ -579,6 +579,18 @@ void DesignDocument::cutSelected()
|
||||
deleteSelected();
|
||||
}
|
||||
|
||||
void DesignDocument::duplicateSelected()
|
||||
{
|
||||
DesignDocumentView view{m_externalDependencies};
|
||||
currentModel()->attachView(&view);
|
||||
const QList<ModelNode> selectedNodes = view.selectedModelNodes();
|
||||
currentModel()->detachView(&view);
|
||||
|
||||
rewriterView()->executeInTransaction("DesignDocument::duplicateSelected", [this, selectedNodes]() {
|
||||
moveNodesToPosition(selectedNodes, {});
|
||||
});
|
||||
}
|
||||
|
||||
void DesignDocument::paste()
|
||||
{
|
||||
pasteToPosition({});
|
||||
|
||||
@@ -98,6 +98,7 @@ public:
|
||||
void deleteSelected();
|
||||
void copySelected();
|
||||
void cutSelected();
|
||||
void duplicateSelected();
|
||||
void paste();
|
||||
void pasteToPosition(const std::optional<QVector3D> &position);
|
||||
void selectAll();
|
||||
|
||||
Reference in New Issue
Block a user