From 1488062a88238e4a55a411a156e700d94c3a162d Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Tue, 3 Aug 2010 11:53:01 +0200 Subject: [PATCH] Force an update of the current editor. --- src/plugins/cppeditor/cppeditor.cpp | 10 +++++++--- src/plugins/cppeditor/cppeditor.h | 1 + src/plugins/cppeditor/cppplugin.cpp | 13 +++++++++++++ src/plugins/cppeditor/cppplugin.h | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e99d8275642..319d2db63c9 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 25a9f511eee..7519c4ceed5 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 f12c1c9a46a..b43bdd980bb 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 517da5c2f95..b72a8a8df0a 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);