From 8b90b96f3c4316babd49d844bb5e5a9476c0873f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Tue, 20 Jul 2010 14:59:38 +0200 Subject: [PATCH] QmlJSEditor: adding variant for declaringMember declaringMemberNoProperties ignores grouped properties like font and easing curve. It also skips Gradient and GradientStops --- src/plugins/qmljseditor/qmljseditor.cpp | 27 +++++++++++++++++++++++++ src/plugins/qmljseditor/qmljseditor.h | 1 + 2 files changed, 28 insertions(+) diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 403591f9650..c9781893329 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -511,6 +511,33 @@ AST::Node *SemanticInfo::declaringMember(int cursorPosition) const return declaringMember; } +QmlJS::AST::Node *SemanticInfo::declaringMemberNoProperties(int cursorPosition) const +{ + AST::Node *node = declaringMember(cursorPosition); + + if (UiObjectDefinition *objectDefinition = cast<UiObjectDefinition*>(node)) { + QString name = objectDefinition->qualifiedTypeNameId->name->asString(); + if (!name.isNull() && name.at(0).isLower()) { + QList<AST::Node *> path = astPath(cursorPosition); + if (path.size() > 1) + return path.at(path.size() - 2); + } else if (name.contains("GradientStop")) { + QList<AST::Node *> path = astPath(cursorPosition); + if (path.size() > 2) + return path.at(path.size() - 3); + } + } else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(node)) { + QString name = objectBinding->qualifiedTypeNameId->name->asString(); + if (name.contains("Gradient")) { + QList<AST::Node *> path = astPath(cursorPosition); + if (path.size() > 1) + return path.at(path.size() - 2); + } + } + + return node; +} + QList<AST::Node *> SemanticInfo::astPath(int cursorPosition) const { QList<AST::Node *> path; diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index 17b7da2a74f..1517269bb77 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -118,6 +118,7 @@ public: // Returns the declaring member QmlJS::AST::Node *declaringMember(int cursorPosition) const; + QmlJS::AST::Node *declaringMemberNoProperties(int cursorPosition) const; // Returns the AST node under cursor QmlJS::AST::Node *nodeUnderCursor(int cursorPosition) const; -- GitLab