QmlDesigner: small improvements to the paste logic

Change-Id: I256ffbe7f7eff1eb5796a368105d256d319c42bf
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Mahmoud Badri
2020-11-10 21:20:17 +02:00
parent 46d2046173
commit 1b4ef82f28
3 changed files with 15 additions and 15 deletions

View File

@@ -491,7 +491,7 @@ void DesignDocument::paste()
if (rootNode.type() == "empty")
return;
if (rootNode.id() == "designer__Selection") { // pasting multiple objects
if (rootNode.id() == "__multi__selection__") { // pasting multiple objects
currentModel()->attachView(&view);
ModelNode targetNode;
@@ -545,7 +545,7 @@ void DesignDocument::paste()
});
} else { // pasting single object
rewriterView()->executeInTransaction("DesignDocument::paste1", [this, &view, selectedNodes, rootNode]() {
rewriterView()->executeInTransaction("DesignDocument::paste1", [this, &view, rootNode]() {
currentModel()->attachView(&view);
ModelNode pastedNode(view.insertModel(rootNode));
ModelNode targetNode;

View File

@@ -141,23 +141,23 @@ void DesignDocumentView::fromText(const QString &text)
inputModel->setFileUrl(model()->fileUrl());
QPlainTextEdit textEdit;
QString imports;
foreach (const Import &import, model()->imports())
imports += QStringLiteral("import ") + import.toString(true) + QLatin1Char(';') + QLatin1Char('\n');
const auto modelImports = model()->imports();
for (const Import &import : modelImports)
imports += "import " + import.toString(true) + QLatin1Char(';') + QLatin1Char('\n');
textEdit.setPlainText(imports + text);
NotIndentingTextEditModifier modifier(&textEdit);
QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, nullptr));
rewriterView->setCheckSemanticErrors(false);
rewriterView->setTextModifier(&modifier);
inputModel->setRewriterView(rewriterView.data());
RewriterView rewriterView;
rewriterView.setCheckSemanticErrors(false);
rewriterView.setTextModifier(&modifier);
inputModel->setRewriterView(&rewriterView);
rewriterView->restoreAuxiliaryData();
rewriterView.restoreAuxiliaryData();
if (rewriterView->errors().isEmpty() && rewriterView->rootModelNode().isValid()) {
ModelMerger merger(this);
if (rewriterView.errors().isEmpty() && rewriterView.rootModelNode().isValid()) {
try {
merger.replaceModel(rewriterView->rootModelNode());
replaceModel(rewriterView.rootModelNode());
} catch(Exception &/*e*/) {
/* e.showException(); Do not show any error if the clipboard contains invalid QML */
}
@@ -237,13 +237,13 @@ void DesignDocumentView::copyModelNodes(const QList<ModelNode> &nodesToCopy)
Q_ASSERT(view.rootModelNode().type() != "empty");
view.toClipboard();
} else { //multi items selected
} else { // multi items selected
foreach (ModelNode node, view.rootModelNode().directSubModelNodes()) {
node.destroy();
}
view.changeRootNodeType("QtQuick.Rectangle", 2, 0);
view.rootModelNode().setIdWithRefactoring("designer__Selection");
view.rootModelNode().setIdWithRefactoring("__multi__selection__");
foreach (const ModelNode &selectedNode, selectedNodes) {
ModelNode newNode(view.insertModel(selectedNode));

View File

@@ -75,7 +75,7 @@ public:
};
public:
RewriterView(DifferenceHandling differenceHandling, QObject *parent);
RewriterView(DifferenceHandling differenceHandling = RewriterView::Amend, QObject *parent = nullptr);
~RewriterView() override;
void modelAttached(Model *model) override;