forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
@@ -243,7 +243,7 @@ void DesignDocumentView::copyModelNodes(const QList<ModelNode> &nodesToCopy)
|
||||
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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user