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_contextMenu->addSeparator();
|
||||||
|
|
||||||
|
m_duplicateAction = m_contextMenu->addAction(tr("Duplicate"), [&] {
|
||||||
|
QmlDesignerPlugin::instance()->currentDesignDocument()->duplicateSelected();
|
||||||
|
});
|
||||||
|
|
||||||
m_copyAction = m_contextMenu->addAction(tr("Copy"), [&] {
|
m_copyAction = m_contextMenu->addAction(tr("Copy"), [&] {
|
||||||
QmlDesignerPlugin::instance()->currentDesignDocument()->copySelected();
|
QmlDesignerPlugin::instance()->currentDesignDocument()->copySelected();
|
||||||
});
|
});
|
||||||
@@ -374,6 +378,7 @@ void Edit3DWidget::showContextMenu(const QPoint &pos, const ModelNode &modelNode
|
|||||||
|
|
||||||
m_editComponentAction->setEnabled(isSingleComponent);
|
m_editComponentAction->setEnabled(isSingleComponent);
|
||||||
m_editMaterialAction->setEnabled(isModel);
|
m_editMaterialAction->setEnabled(isModel);
|
||||||
|
m_duplicateAction->setEnabled(isNotRoot);
|
||||||
m_copyAction->setEnabled(isNotRoot);
|
m_copyAction->setEnabled(isNotRoot);
|
||||||
m_pasteAction->setEnabled(isPasteAvailable());
|
m_pasteAction->setEnabled(isPasteAvailable());
|
||||||
m_deleteAction->setEnabled(isNotRoot);
|
m_deleteAction->setEnabled(isNotRoot);
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ private:
|
|||||||
QPointer<QMenu> m_contextMenu;
|
QPointer<QMenu> m_contextMenu;
|
||||||
QPointer<QAction> m_editComponentAction;
|
QPointer<QAction> m_editComponentAction;
|
||||||
QPointer<QAction> m_editMaterialAction;
|
QPointer<QAction> m_editMaterialAction;
|
||||||
|
QPointer<QAction> m_duplicateAction;
|
||||||
QPointer<QAction> m_copyAction;
|
QPointer<QAction> m_copyAction;
|
||||||
QPointer<QAction> m_pasteAction;
|
QPointer<QAction> m_pasteAction;
|
||||||
QPointer<QAction> m_deleteAction;
|
QPointer<QAction> m_deleteAction;
|
||||||
|
|||||||
@@ -579,6 +579,18 @@ void DesignDocument::cutSelected()
|
|||||||
deleteSelected();
|
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()
|
void DesignDocument::paste()
|
||||||
{
|
{
|
||||||
pasteToPosition({});
|
pasteToPosition({});
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ public:
|
|||||||
void deleteSelected();
|
void deleteSelected();
|
||||||
void copySelected();
|
void copySelected();
|
||||||
void cutSelected();
|
void cutSelected();
|
||||||
|
void duplicateSelected();
|
||||||
void paste();
|
void paste();
|
||||||
void pasteToPosition(const std::optional<QVector3D> &position);
|
void pasteToPosition(const std::optional<QVector3D> &position);
|
||||||
void selectAll();
|
void selectAll();
|
||||||
|
|||||||
Reference in New Issue
Block a user