From cbf98ba819e424345fcf9ad0bd42a52c462f072a Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 11 Mar 2014 14:00:57 -0300 Subject: CppEditor: Allow force highlighting if using clang ...so we can rehighlight if it's requested by the editor. This is e.g. necessary if the font size changes. Task-number: QTCREATORBUG-11502 Change-Id: I608921899fc37fcf1394db9ff041e6b378196bdd Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/cpptoolseditorsupport.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/plugins/cpptools/cpptoolseditorsupport.cpp') diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 4a6f4351e9..4932b21e9a 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.cpp +++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp @@ -237,7 +237,7 @@ Document::Ptr CppEditorSupport::lastSemanticInfoDocument() const return m_lastSemanticInfo.doc; } -void CppEditorSupport::recalculateSemanticInfoDetached(bool force) +void CppEditorSupport::recalculateSemanticInfoDetached(ForceReason forceReason) { // Block premature calculation caused by CppEditorPlugin::currentEditorChanged // when the editor is created. @@ -245,12 +245,13 @@ void CppEditorSupport::recalculateSemanticInfoDetached(bool force) return; m_futureSemanticInfo.cancel(); + const bool force = forceReason != NoForce; SemanticInfo::Source source = currentSource(force); m_futureSemanticInfo = QtConcurrent::run( &CppEditorSupport::recalculateSemanticInfoDetached_helper, this, source); if (force && m_highlightingSupport && !m_highlightingSupport->requiresSemanticInfo()) - startHighlighting(); + startHighlighting(forceReason); } CppCompletionAssistProvider *CppEditorSupport::completionAssistProvider() const @@ -352,14 +353,14 @@ void CppEditorSupport::onDocumentUpdated(Document::Ptr doc) || m_lastSemanticInfo.doc->translationUnit()->ast() == 0 || m_lastSemanticInfo.doc->fileName() != fileName()))) { m_initialized = true; - recalculateSemanticInfoDetached(/* force = */ true); + recalculateSemanticInfoDetached(ForceDueToMissingSemanticInfo); } // notify the editor that the document is updated emit documentUpdated(); } -void CppEditorSupport::startHighlighting() +void CppEditorSupport::startHighlighting(ForceReason forceReason) { if (!m_highlightingSupport) return; @@ -395,8 +396,8 @@ void CppEditorSupport::startHighlighting() m_lastHighlightOnCompleteSemanticInfo = complete; emit highlighterStarted(&m_highlighter, m_lastHighlightRevision); } else { - const unsigned revision = currentSource(false).revision; - if (m_lastHighlightRevision == revision) + const unsigned revision = editorRevision(); + if (forceReason != ForceDueEditorRequest && m_lastHighlightRevision == revision) return; m_highlighter.cancel(); -- cgit v1.2.1