From 6f3dc3198c037b791ed936705776c6ef9b611d47 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Wed, 24 Aug 2011 12:01:50 +0200 Subject: [PATCH] C++ editor: Prefer to use extra selections to find diagnostics. Change-Id: I5f1c6e29c8386018cfd4d45d8ee63fc3e24311f6 Reviewed-on: http://codereview.qt.nokia.com/3484 Reviewed-by: Leandro T. C. Melo --- src/plugins/cppeditor/cppelementevaluator.cpp | 12 ++++++------ src/plugins/cppeditor/cppelementevaluator.h | 2 +- src/plugins/cpptools/cppmodelmanager.cpp | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp index f4a22e759bd..541adf793bd 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cppeditor/cppelementevaluator.cpp @@ -109,7 +109,7 @@ void CppElementEvaluator::execute() const int pos = m_tc.position(); m_editor->convertPosition(pos, &line, &column); - checkDiagnosticMessage(doc, line); + checkDiagnosticMessage(pos); if (!matchIncludeFile(doc, line) && !matchMacroInUse(doc, pos)) { CppTools::moveCursorToEndOfIdentifier(&m_tc); @@ -130,12 +130,12 @@ void CppElementEvaluator::execute() } } -void CppElementEvaluator::checkDiagnosticMessage(const CPlusPlus::Document::Ptr &document, - unsigned line) +void CppElementEvaluator::checkDiagnosticMessage(int pos) { - foreach (const Document::DiagnosticMessage &m, document->diagnosticMessages()) { - if (m.line() == line) { - m_diagnosis = m.text(); + foreach (const QTextEdit::ExtraSelection &sel, + m_editor->extraSelections(TextEditor::BaseTextEditorWidget::CodeWarningsSelection)) { + if (pos >= sel.cursor.selectionStart() && pos <= sel.cursor.selectionEnd()) { + m_diagnosis = sel.format.toolTip(); break; } } diff --git a/src/plugins/cppeditor/cppelementevaluator.h b/src/plugins/cppeditor/cppelementevaluator.h index ac68784f478..92a72b6163e 100644 --- a/src/plugins/cppeditor/cppelementevaluator.h +++ b/src/plugins/cppeditor/cppelementevaluator.h @@ -78,7 +78,7 @@ public: private: void clear(); - void checkDiagnosticMessage(const CPlusPlus::Document::Ptr &document, unsigned line); + void checkDiagnosticMessage(int pos); bool matchIncludeFile(const CPlusPlus::Document::Ptr &document, unsigned line); bool matchMacroInUse(const CPlusPlus::Document::Ptr &document, unsigned pos); void handleLookupItemMatch(const CPlusPlus::Snapshot &snapshot, diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 012229d026b..79c96c14788 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -1084,6 +1084,7 @@ void CppModelManager::onDocumentUpdated(Document::Ptr doc) } c.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); sel.cursor = c; + sel.format.setToolTip(m.text()); selections.append(sel); } #endif