From 700975ade3bf051171aabab31fd7d95ca6dbf4ab Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Tue, 20 Jul 2010 15:19:57 +0200
Subject: [PATCH] QmlJS: ALlow users of the Rewriter to specify where to insert
 stuff

---
 src/libs/qmljs/qmljsrewriter.cpp | 15 +++++++++------
 src/libs/qmljs/qmljsrewriter.h   |  5 +++--
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp
index 35886ee4619..e48fda894dc 100644
--- a/src/libs/qmljs/qmljsrewriter.cpp
+++ b/src/libs/qmljs/qmljsrewriter.cpp
@@ -55,11 +55,13 @@ Rewriter::Rewriter(const QString &originalText,
 void Rewriter::addBinding(AST::UiObjectInitializer *ast,
                           const QString &propertyName,
                           const QString &propertyValue,
-                          BindingType bindingType)
+                          BindingType bindingType,
+                          UiObjectMemberList *insertAfter)
 {
-    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members,
-                                                                propertyName,
-                                                                m_propertyOrder);
+    if (!insertAfter)
+        insertAfter = searchMemberToInsertAfter(ast->members,
+                                                propertyName,
+                                                m_propertyOrder);
     SourceLocation endOfPreviousMember;
     SourceLocation startOfNextMember;
 
@@ -568,9 +570,10 @@ void Rewriter::appendToArrayBinding(UiArrayBinding *arrayBinding,
     m_changeSet->insert(insertionPoint, QLatin1String(",\n") + content);
 }
 
-void Rewriter::addObject(UiObjectInitializer *ast, const QString &content)
+void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter = 0)
 {
-    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
+    if (!insertAfter)
+        insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
 
     int insertionPoint;
     QString textToInsert;
diff --git a/src/libs/qmljs/qmljsrewriter.h b/src/libs/qmljs/qmljsrewriter.h
index ce480856e42..fef26457748 100644
--- a/src/libs/qmljs/qmljsrewriter.h
+++ b/src/libs/qmljs/qmljsrewriter.h
@@ -59,7 +59,8 @@ public:
     void addBinding(AST::UiObjectInitializer *ast,
                     const QString &propertyName,
                     const QString &propertyValue,
-                    BindingType bindingType);
+                    BindingType bindingType,
+                    UiObjectMemberList *insertAfter = 0);
 
     void changeProperty(AST::UiObjectInitializer *ast,
                         const QString &propertyName,
@@ -70,7 +71,7 @@ public:
 
     void appendToArrayBinding(AST::UiArrayBinding *arrayBinding,
                               const QString &content);
-    void addObject(AST::UiObjectInitializer *ast, const QString &content);
+    void addObject(AST::UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter = 0);
     void removeObjectMember(AST::UiObjectMember *member, AST::UiObjectMember *parent);
 
     static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QStringList &propertyOrder);
-- 
GitLab