From bb596688c28f6c716bf4d0c853538db65bbbb71c Mon Sep 17 00:00:00 2001
From: Lasse Holmstedt <lasse.holmstedt@nokia.com>
Date: Thu, 15 Jul 2010 10:53:49 +0200
Subject: [PATCH] fixed singleselection for states qml file

---
 src/plugins/qmljseditor/qmljseditor.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index ea6c3741e5e..21ff1abfe66 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -1002,6 +1002,11 @@ protected:
         return (cursorPositionEnd >= begin && cursorPositionStart <= end);
     }
 
+    bool isRangeSelected() const
+    {
+        return (cursorPositionStart != cursorPositionEnd);
+    }
+
     virtual void postVisit(Node *ast)
     {
         if ((cursorPositionStart == cursorPositionEnd && !selectedMembers.isEmpty()))
@@ -1011,12 +1016,13 @@ protected:
             unsigned begin = member->firstSourceLocation().begin();
             unsigned end = member->lastSourceLocation().end();
 
-            if ((cursorPositionStart != cursorPositionEnd && intersectsCursor(begin, end))
-             || (cursorPositionStart == cursorPositionEnd && containsCursor(begin, end)))
+            if ((isRangeSelected() && intersectsCursor(begin, end))
+            || (!isRangeSelected() && containsCursor(begin, end)))
             {
                 if (UiObjectInitializer *init = initializer(member)) {
                     for (UiObjectMemberList *it = init->members; it; it = it->next) {
-                        if (isAcceptableParent(member)) {
+                        if ((isRangeSelected() && isAcceptableParent(member))
+                         || (!isRangeSelected() && isIdBinding(it->member))) {
                             selectedMembers << member;
                             // move start towards end; this facilitates multiselection so that root is usually ignored.
                             cursorPositionStart = qMin(end, cursorPositionEnd);
-- 
GitLab