diff --git a/src/plugins/qmldesigner/core/filemanager/addpropertyvisitor.cpp b/src/plugins/qmldesigner/core/filemanager/addpropertyvisitor.cpp
index 98ef915a0ec7df993cb22de7dea7704f80c30525..91afc7e86d24596e4b820139a318fb9fa966e647 100644
--- a/src/plugins/qmldesigner/core/filemanager/addpropertyvisitor.cpp
+++ b/src/plugins/qmldesigner/core/filemanager/addpropertyvisitor.cpp
@@ -105,6 +105,25 @@ void AddPropertyVisitor::addInMembers(QmlJS::AST::UiObjectInitializer *initializ
 
         depth = calculateIndentDepth(endOfPreviousMember);
     }
+    const bool isOneLiner = endOfPreviousMember.startLine == startOfNextMember.startLine;
+    bool needsPreceedingSemicolon = false;
+    bool needsTrailingSemicolon = false;
+
+    if (isOneLiner) {
+        if (insertAfter == 0) { // we're inserting after an lbrace
+            if (insertAfter->next) { // we're inserting before a member (and not the rbrace)
+                needsTrailingSemicolon = true;
+            }
+        } else { // we're inserting after a member, not after the lbrace
+            if (endOfPreviousMember.isValid()) { // there already is a semicolon after the previous member
+                if (insertAfter->next && insertAfter->next->member) { // and the after us there is a member, not an rbrace, so:
+                    needsTrailingSemicolon = true;
+                }
+            } else { // there is no semicolon after the previous member (probably because there is an rbrace after us/it, so:
+                needsPreceedingSemicolon = true;
+            }
+        }
+    }
 
     QString newPropertyTemplate;
     switch (m_propertyType) {
@@ -125,12 +144,18 @@ void AddPropertyVisitor::addInMembers(QmlJS::AST::UiObjectInitializer *initializ
         Q_ASSERT(!"unknown property type");
     }
 
-    const bool isOneLiner = endOfPreviousMember.startLine == startOfNextMember.startLine;
-    if (isOneLiner)
-        newPropertyTemplate += QLatin1Char('\n');
+    if (isOneLiner) {
+        if (needsPreceedingSemicolon)
+            newPropertyTemplate.prepend(QLatin1Char(';'));
+        newPropertyTemplate.prepend(QLatin1Char(' '));
+        if (needsTrailingSemicolon)
+            newPropertyTemplate.append(QLatin1Char(';'));
+    } else {
+        newPropertyTemplate.prepend(QLatin1Char('\n'));
+    }
 
     const QString newPropertyText = addIndentation(newPropertyTemplate.arg(m_name, m_value), depth);
-    replace(endOfPreviousMember.end(), 0, QLatin1Char('\n') + newPropertyText);
+    replace(endOfPreviousMember.end(), 0, newPropertyText);
 
     setDidRewriting(true);
 }