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