void DesignDocument::copySelected() { QScopedPointer<Model> copyModel(Model::create("QtQuick.Rectangle", 1, 0, currentModel())); copyModel->setFileUrl(currentModel()->fileUrl()); copyModel->changeImports(currentModel()->imports(), QList<Import>()); Q_ASSERT(copyModel); DesignDocumentView view; currentModel()->attachView(&view); if (view.selectedModelNodes().isEmpty()) return; QList<ModelNode> selectedNodes(view.selectedModelNodes()); foreach (const ModelNode &node, selectedNodes) { foreach (const ModelNode &node2, selectedNodes) { if (node.isAncestorOf(node2)) selectedNodes.removeAll(node2); } }
void DesignDocumentView::copyModelNodes(const QList<ModelNode> &nodesToCopy) { Model *parentModel = currentModel(); QTC_ASSERT(parentModel, return); QScopedPointer<Model> copyModel(Model::create("QtQuick.Rectangle", 1, 0, parentModel)); copyModel->setFileUrl(parentModel->fileUrl()); copyModel->changeImports(parentModel->imports(), {}); Q_ASSERT(copyModel); QList<ModelNode> selectedNodes = nodesToCopy; if (selectedNodes.isEmpty()) return; foreach (const ModelNode &node, selectedNodes) { foreach (const ModelNode &node2, selectedNodes) { if (node.isAncestorOf(node2)) selectedNodes.removeAll(node2); } }