diff --git a/src/plugins/texteditor/generichighlighter/highlightdefinition.cpp b/src/plugins/texteditor/generichighlighter/highlightdefinition.cpp index 7c723229d95ad6343d209cbf249a5340bb3e8a7d..4d6d92c8974c1b1acce0f8d00d247b88c039b235 100644 --- a/src/plugins/texteditor/generichighlighter/highlightdefinition.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightdefinition.cpp @@ -49,7 +49,7 @@ HighlightDefinition::~HighlightDefinition() {} template <class Element, class Container> -const QSharedPointer<Element> &HighlightDefinition:: +QSharedPointer<Element> HighlightDefinition:: GenericHelper::create(const QString &name, Container &container) { if (name.isEmpty()) @@ -58,12 +58,11 @@ GenericHelper::create(const QString &name, Container &container) if (container.contains(name)) throw HighlighterException(); - container.insert(name, QSharedPointer<Element>(new Element)); - return *container.constFind(name); + return container.insert(name, QSharedPointer<Element>(new Element)).value(); } template <class Element, class Container> -const QSharedPointer<Element> &HighlightDefinition:: +QSharedPointer<Element> HighlightDefinition:: GenericHelper::find(const QString &name, const Container &container) const { typename Container::const_iterator it = container.find(name); @@ -73,34 +72,35 @@ GenericHelper::find(const QString &name, const Container &container) const return it.value(); } -const QSharedPointer<KeywordList> &HighlightDefinition::createKeywordList(const QString &list) +QSharedPointer<KeywordList> HighlightDefinition::createKeywordList(const QString &list) { return m_helper.create<KeywordList>(list, m_lists); } -const QSharedPointer<KeywordList> &HighlightDefinition::keywordList(const QString &list) +QSharedPointer<KeywordList> HighlightDefinition::keywordList(const QString &list) { return m_helper.find<KeywordList>(list, m_lists); } -const QSharedPointer<Context> &HighlightDefinition::createContext(const QString &context, - bool initial) +QSharedPointer<Context> HighlightDefinition::createContext(const QString &context, bool initial) { if (initial) m_initialContext = context; - return m_helper.create<Context>(context, m_contexts); + QSharedPointer<Context> newContext = m_helper.create<Context>(context, m_contexts); + newContext->setName(context); + return newContext; } -const QSharedPointer<Context> &HighlightDefinition::initialContext() const +QSharedPointer<Context> HighlightDefinition::initialContext() const { return m_helper.find<Context>(m_initialContext, m_contexts); } -const QSharedPointer<Context> &HighlightDefinition::context(const QString &context) const +QSharedPointer<Context> HighlightDefinition::context(const QString &context) const { return m_helper.find<Context>(context, m_contexts); } const QHash<QString, QSharedPointer<Context> > &HighlightDefinition::contexts() const { return m_contexts; } -const QSharedPointer<ItemData> &HighlightDefinition::createItemData(const QString &itemData) +QSharedPointer<ItemData> HighlightDefinition::createItemData(const QString &itemData) { return m_helper.create<ItemData>(itemData, m_itemsData); } -const QSharedPointer<ItemData> &HighlightDefinition::itemData(const QString &itemData) const +QSharedPointer<ItemData> HighlightDefinition::itemData(const QString &itemData) const { return m_helper.find<ItemData>(itemData, m_itemsData); } void HighlightDefinition::setSingleLineComment(const QString &start) diff --git a/src/plugins/texteditor/generichighlighter/highlightdefinition.h b/src/plugins/texteditor/generichighlighter/highlightdefinition.h index 2f48bc24c8f7f251683f068e14f402be7d2fb252..dd94838d8704af8b9cbe63e3c907bd13102a33ba 100644 --- a/src/plugins/texteditor/generichighlighter/highlightdefinition.h +++ b/src/plugins/texteditor/generichighlighter/highlightdefinition.h @@ -47,16 +47,16 @@ public: HighlightDefinition(); ~HighlightDefinition(); - const QSharedPointer<KeywordList> &createKeywordList(const QString &list); - const QSharedPointer<KeywordList> &keywordList(const QString &list); + QSharedPointer<KeywordList> createKeywordList(const QString &list); + QSharedPointer<KeywordList> keywordList(const QString &list); - const QSharedPointer<Context> &createContext(const QString &context, bool initial); - const QSharedPointer<Context> &initialContext() const; - const QSharedPointer<Context> &context(const QString &context) const; + QSharedPointer<Context> createContext(const QString &context, bool initial); + QSharedPointer<Context> initialContext() const; + QSharedPointer<Context> context(const QString &context) const; const QHash<QString, QSharedPointer<Context> > &contexts() const; - const QSharedPointer<ItemData> &createItemData(const QString &itemData); - const QSharedPointer<ItemData> &itemData(const QString &itemData) const; + QSharedPointer<ItemData> createItemData(const QString &itemData); + QSharedPointer<ItemData> itemData(const QString &itemData) const; void setKeywordsSensitive(const QString &sensitivity); Qt::CaseSensitivity keywordsSensitive() const; @@ -86,10 +86,10 @@ private: struct GenericHelper { template <class Element, class Container> - const QSharedPointer<Element> &create(const QString &name, Container &container); + QSharedPointer<Element> create(const QString &name, Container &container); template <class Element, class Container> - const QSharedPointer<Element> &find(const QString &name, const Container &container) const; + QSharedPointer<Element> find(const QString &name, const Container &container) const; }; GenericHelper m_helper; diff --git a/src/plugins/texteditor/generichighlighter/highlightdefinitionhandler.cpp b/src/plugins/texteditor/generichighlighter/highlightdefinitionhandler.cpp index f18d3de8f2fdc3ce9e04c9938f52c74f599a4817..c6a023aaf8afc9d5e9774ae0f4ef0d49436275a7 100644 --- a/src/plugins/texteditor/generichighlighter/highlightdefinitionhandler.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightdefinitionhandler.cpp @@ -224,7 +224,6 @@ void HighlightDefinitionHandler::contextElementStarted(const QXmlAttributes &att { m_currentContext = m_definition->createContext(atts.value(kName), m_initialContext); m_currentContext->setDefinition(m_definition); - m_currentContext->setName(atts.value(kName)); m_currentContext->setItemData(atts.value(kAttribute)); m_currentContext->setDynamic(atts.value(kDynamic)); m_currentContext->setFallthrough(atts.value(kFallthrough)); diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index 04034307070719d7e39813e5cd3ffbcde5952e7e..580d4a3ff2c1dbfa8dfa5ad079ab4769545c245d 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -37,6 +37,7 @@ #include "highlighter.h" #include "highlighterexception.h" #include "manager.h" +#include "context.h" #include "normalindenter.h" #include "fontsettings.h"