From 154b312de61e3e39396a3a7a5516a29bcb5a671e Mon Sep 17 00:00:00 2001
From: mae <qt-info@nokia.com>
Date: Wed, 26 May 2010 19:18:38 +0200
Subject: [PATCH] Fix qml autocompletion on Enter

Only insert necessary newlines

Reviewed-by: thorbjorn
Task-number: QTCREATORBUG-1476
---
 src/plugins/qmljseditor/qmljseditor.cpp | 28 +++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index b0c000cbcf1..0348812557f 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -1225,9 +1225,33 @@ QString QmlJSTextEditor::insertMatchingBrace(const QTextCursor &tc, const QStrin
     return QString();
 }
 
-QString QmlJSTextEditor::insertParagraphSeparator(const QTextCursor &) const
+static bool shouldInsertNewline(const QTextCursor &tc)
 {
-    return QLatin1String("}\n");
+    QTextDocument *doc = tc.document();
+    int pos = tc.selectionEnd();
+
+    // count the number of empty lines.
+    int newlines = 0;
+    for (int e = doc->characterCount(); pos != e; ++pos) {
+        const QChar ch = doc->characterAt(pos);
+
+        if (! ch.isSpace())
+            break;
+        else if (ch == QChar::ParagraphSeparator)
+            ++newlines;
+    }
+
+    if (newlines <= 1 && doc->characterAt(pos) != QLatin1Char('}'))
+        return true;
+
+    return false;
+}
+
+QString QmlJSTextEditor::insertParagraphSeparator(const QTextCursor &tc) const
+{
+    if (shouldInsertNewline(tc))
+        return QLatin1String("}\n");
+    return QLatin1String("}");
 }
 
 void QmlJSTextEditor::forceSemanticRehighlight()
-- 
GitLab