From d83243fbe6950e6aa98f507abd1896aa44ef5a38 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 19 Aug 2019 11:35:53 +0200 Subject: [PATCH] QmlDesigner: Do not jump to EOF Task-number: QDS-739 Change-Id: I8594e30aad20494d89c748e7f848180bc9af862d Reviewed-by: Tim Jenssen --- .../designercore/model/rewriterview.cpp | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 1cfec9fd04e..8f8a3946023 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -969,13 +969,13 @@ void RewriterView::delayedSetup() static QString annotationsEnd() { - const static QString end = QString(" %1*/").arg(annotationsEscapeSequence); + const static QString end = QString("%1*/").arg(annotationsEscapeSequence); return end; } static QString annotationsStart() { - const static QString start = QString("/*%1 ").arg(annotationsEscapeSequence); + const static QString start = QString("/*%1").arg(annotationsEscapeSequence); return start; } @@ -1000,29 +1000,27 @@ void RewriterView::writeAuxiliaryData() const QString oldText = m_textModifier->text(); - QString newText = oldText; - - int startIndex = newText.indexOf(annotationsStart()); - int endIndex = newText.indexOf(annotationsEnd()); - - if (startIndex > 0 && endIndex > 0) - newText.remove(startIndex, endIndex - startIndex + annotationsEnd().length()); - - newText = newText.trimmed(); - newText.append("\n"); + const int startIndex = oldText.indexOf(annotationsStart()); + const int endIndex = oldText.indexOf(annotationsEnd()); QString auxData = auxiliaryDataAsQML(); + const bool replace = startIndex > 0 && endIndex > 0; + if (!auxData.isEmpty()) { - auxData.prepend("\n" + annotationsStart()); - auxData.append(annotationsEnd() + "\n"); - newText.append(auxData); + auxData.prepend("\n"); + auxData.prepend(annotationsStart()); + if (!replace) + auxData.prepend("\n"); + auxData.append(annotationsEnd()); + if (!replace) + auxData.append("\n"); } - QTextCursor tc(m_textModifier->textDocument()); - Utils::ChangeSet changeSet; - changeSet.replace(0, oldText.length(), newText); - changeSet.apply(&tc); + if (replace) + m_textModifier->replace(startIndex, endIndex - startIndex + annotationsEnd().length(), auxData); + else + m_textModifier->replace(oldText.length(), 0, auxData); } static void checkNode(const QmlJS::SimpleReaderNode::Ptr &node, RewriterView *view);