From 033ad8875ba4d310e3ecf73c94f1a9846472bba3 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 2 May 2013 11:42:33 +0200 Subject: C++: handle file type changes for choosing highlighters. If the file type (mime type) of an editor changes, it might need a different kind of highlighter/highlighting-support. Change-Id: I470dbf69e71856c9593d201416c4d4bd2958aaec Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/cpptoolseditorsupport.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src/plugins/cpptools/cpptoolseditorsupport.cpp') diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 01001fee76..45d970d475 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.cpp +++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp @@ -115,16 +115,10 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager, BaseTextEditor , m_cachedContentsEditorRevision(-1) , m_initialized(false) , m_lastHighlightRevision(0) - , m_highlightingSupport(modelManager->highlightingSupport(textEditor)) { connect(m_modelManager, SIGNAL(documentUpdated(CPlusPlus::Document::Ptr)), this, SLOT(onDocumentUpdated(CPlusPlus::Document::Ptr))); - if (m_highlightingSupport && m_highlightingSupport->requiresSemanticInfo()) { - connect(this, SIGNAL(semanticInfoUpdated(CppTools::SemanticInfo)), - this, SLOT(startHighlighting())); - } - m_updateDocumentTimer = new QTimer(this); m_updateDocumentTimer->setSingleShot(true); m_updateDocumentTimer->setInterval(m_updateDocumentInterval); @@ -139,7 +133,8 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager, BaseTextEditor connect(m_textEditor, SIGNAL(contentsChanged()), this, SLOT(updateDocument())); connect(this, SIGNAL(diagnosticsChanged()), this, SLOT(onDiagnosticsChanged())); - updateDocument(); + connect(m_textEditor->document(), SIGNAL(mimeTypeChanged()), + this, SLOT(onMimeTypeChanged())); } CppEditorSupport::~CppEditorSupport() @@ -486,3 +481,19 @@ void CppEditorSupport::recalculateSemanticInfoDetached_helper(QFutureInterfacehighlightingSupport(m_textEditor)); + + disconnect(this, SIGNAL(semanticInfoUpdated(CppTools::SemanticInfo)), + this, SLOT(startHighlighting())); + if (m_highlightingSupport && m_highlightingSupport->requiresSemanticInfo()) + connect(this, SIGNAL(semanticInfoUpdated(CppTools::SemanticInfo)), + this, SLOT(startHighlighting())); + + updateDocumentNow(); +} -- cgit v1.2.1