From b87edd821df54f0f767de5b9ef8ece9728e341e7 Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Thu, 23 Sep 2010 18:34:17 +0200 Subject: [PATCH] Tooltips and help ids: Fix for templates. Tooltips can still be improved. --- src/plugins/cppeditor/cppelementevaluator.cpp | 30 +++++++++++++++++++ src/plugins/cppeditor/cppelementevaluator.h | 13 ++++++++ 2 files changed, 43 insertions(+) diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp index aedbfa65f64..4ed8a0b207a 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cppeditor/cppelementevaluator.cpp @@ -192,6 +192,8 @@ void CppElementEvaluator::handleLookupItemMatch(const Snapshot &snapshot, } else if (declaration->isDeclaration() && type.isValid()) { m_element = QSharedPointer<CppElement>( new CppVariable(declaration, context, lookupItem.scope())); + } else if (declaration->isTemplate() && declaration->asTemplate()->declaration()) { + m_element = QSharedPointer<CppElement>(new CppTemplate(declaration)); } else { m_element = QSharedPointer<CppElement>(new CppDeclarableElement(declaration)); } @@ -491,3 +493,31 @@ CppVariable::CppVariable(Symbol *declaration, const LookupContext &context, Scop CppVariable::~CppVariable() {} + +// CppTemplate +CppTemplate::CppTemplate(CPlusPlus::Symbol *declaration) : CppDeclarableElement(declaration) +{ + Template *templateSymbol = declaration->asTemplate(); + if (templateSymbol->declaration()->isClass() || + templateSymbol->declaration()->isForwardClassDeclaration()) { + m_isClassTemplate = true; + setHelpCategory(TextEditor::HelpItem::ClassOrNamespace); + setTooltip(qualifiedName()); + } else { + m_isClassTemplate = false; + setHelpCategory(TextEditor::HelpItem::Function); + } +} + +CppTemplate::~CppTemplate() +{} + +bool CppTemplate::isClassTemplate() const +{ + return m_isClassTemplate; +} + +bool CppTemplate::isFunctionTemplate() const +{ + return !m_isClassTemplate; +} diff --git a/src/plugins/cppeditor/cppelementevaluator.h b/src/plugins/cppeditor/cppelementevaluator.h index 6a34f4666d4..f71e8b323e7 100644 --- a/src/plugins/cppeditor/cppelementevaluator.h +++ b/src/plugins/cppeditor/cppelementevaluator.h @@ -233,6 +233,19 @@ public: virtual ~CppVariable(); }; +class CppTemplate : public CppDeclarableElement +{ +public: + CppTemplate(CPlusPlus::Symbol *declaration); + virtual ~CppTemplate(); + + bool isClassTemplate() const; + bool isFunctionTemplate() const; + +private: + bool m_isClassTemplate; +}; + } // namespace Internal } // namespace CppEditor -- GitLab