diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e99d827564251b35dd7f5cfff522fb329e946fb8..319d2db63c9d26adefb5b97eb0a033519b8c6a6b 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -578,6 +578,12 @@ void CPPEditor::abortRename() setExtraSelections(CodeSemanticsSelection, m_renameSelections); } +void CPPEditor::rehighlight(bool force) +{ + const SemanticHighlighter::Source source = currentSource(force); + m_semanticHighlighter->rehighlight(source); +} + void CPPEditor::onDocumentUpdated(Document::Ptr doc) { if (doc->fileName() != file()->fileName()) @@ -588,9 +594,7 @@ void CPPEditor::onDocumentUpdated(Document::Ptr doc) if (! m_initialized) { m_initialized = true; - - const SemanticHighlighter::Source source = currentSource(/*force = */ true); - m_semanticHighlighter->rehighlight(source); + rehighlight(/* force = */ true); } m_updateOutlineTimer->start(); diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 25a9f511eeea44a469374f71049c2282dacba182..7519c4ceed56a142afc758f1a98d189e237ac9da 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -194,6 +194,7 @@ public Q_SLOTS: void findUsages(); void renameUsagesNow(const QString &replacement = QString()); void hideRenameNotification(); + void rehighlight(bool force = false); protected: bool event(QEvent *e); diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index f12c1c9a46a273fac2e11f5b218c9af487cc5d41..b43bdd980bbd7d4d947e1131a492631bfbdc4568 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -302,6 +302,9 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess this, SLOT(onTaskStarted(QString))); connect(core->progressManager(), SIGNAL(allTasksFinished(QString)), this, SLOT(onAllTasksFinished(QString))); + + connect(core->editorManager(), SIGNAL(currentEditorChanged(Core::IEditor*)), SLOT(currentEditorChanged(Core::IEditor*))); + readSettings(); return true; } @@ -400,4 +403,14 @@ void CppPlugin::onAllTasksFinished(const QString &type) } } +void CppPlugin::currentEditorChanged(Core::IEditor *editor) +{ + if (! editor) + return; + + else if (CPPEditor *textEditor = qobject_cast(editor->widget())) { + textEditor->rehighlight(/*force = */ true); + } +} + Q_EXPORT_PLUGIN(CppPlugin) diff --git a/src/plugins/cppeditor/cppplugin.h b/src/plugins/cppeditor/cppplugin.h index 517da5c2f956de502978bc1dd615e433de3a980d..b72a8a8df0ab324a03fc2e2c02f520e83d495d47 100644 --- a/src/plugins/cppeditor/cppplugin.h +++ b/src/plugins/cppeditor/cppplugin.h @@ -84,6 +84,7 @@ private slots: void findUsages(); void quickFix(TextEditor::ITextEditable *editable); void quickFixNow(); + void currentEditorChanged(Core::IEditor *editor); private: Core::IEditor *createEditor(QWidget *parent);