Improve Copy and Paste in Bauhaus

Now the items are pasted to the parent of selected node. It is too
selected after the paste.

Reviewed-by: Kai Koehne
This commit is contained in:
Marco Bubke
2010-02-08 15:05:41 +01:00
parent e5e3c24ed4
commit 0a62a383bd

View File

@@ -627,13 +627,18 @@ void DesignDocumentController::paste()
model->detachView(&view);
m_d->model->attachView(&view);
ModelNode selectedNode;
ModelNode targetNode;
if (!view.selectedModelNodes().isEmpty())
selectedNode = view.selectedModelNodes().first();
targetNode = view.selectedModelNodes().first();
if (!targetNode.isValid())
targetNode = view.rootModelNode();
if (targetNode.parentProperty().isValid())
targetNode = targetNode.parentProperty().parentModelNode();
if (!selectedNode.isValid())
selectedNode = view.rootModelNode();
foreach (const ModelNode &node, selectedNodes) {
foreach (const ModelNode &node2, selectedNodes) {
if (node.isAncestorOf(node2))
@@ -641,25 +646,36 @@ void DesignDocumentController::paste()
}
}
QList<ModelNode> pastedNodeList;
foreach (const ModelNode &node, selectedNodes) {
QString defaultProperty(selectedNode.metaInfo().defaultProperty());
QString defaultProperty(targetNode.metaInfo().defaultProperty());
ModelNode pastedNode(view.insertModel(node));
selectedNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
pastedNodeList.append(pastedNode);
targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
}
view.setSelectedModelNodes(pastedNodeList);
} else {
model->detachView(&view);
m_d->model->attachView(&view);
ModelNode pastedNode(view.insertModel(rootNode));
ModelNode selectedNode;
ModelNode targetNode;
if (!view.selectedModelNodes().isEmpty())
selectedNode = view.selectedModelNodes().first();
targetNode = view.selectedModelNodes().first();
if (!targetNode.isValid())
targetNode = view.rootModelNode();
if (targetNode.parentProperty().isValid())
targetNode = targetNode.parentProperty().parentModelNode();
QString defaultProperty(targetNode.metaInfo().defaultProperty());
targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
if (!selectedNode.isValid())
selectedNode = view.rootModelNode();
QString defaultProperty(selectedNode.metaInfo().defaultProperty());
selectedNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
}
}