diff --git a/src/plugins/qmljseditor/qmlhoverhandler.cpp b/src/plugins/qmljseditor/qmlhoverhandler.cpp index e26f97058458c698ce58100d1448baf32fbd0485..f3d3c361258c1d149836b82b4c813bdb4536719b 100644 --- a/src/plugins/qmljseditor/qmlhoverhandler.cpp +++ b/src/plugins/qmljseditor/qmlhoverhandler.cpp @@ -158,16 +158,14 @@ void QmlHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in QTextCursor tc(scriptEditor->document()); tc.setPosition(pos); - const unsigned lineNumber = tc.block().blockNumber() + 1; // We only want to show F1 if the tooltip matches the help id bool showF1 = true; - foreach (const QmlJS::DiagnosticMessage &m, scriptEditor->diagnosticMessages()) { - if (m.loc.startLine == lineNumber) { - m_toolTip = m.message; + foreach (const QTextEdit::ExtraSelection &sel, scriptEditor->extraSelections(TextEditor::BaseTextEditor::CodeWarningsSelection)) { + if (pos >= sel.cursor.selectionStart() && pos <= sel.cursor.selectionEnd()) { showF1 = false; - break; + m_toolTip = sel.format.toolTip(); } } diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 969cff21e4322dac79c414a1387951d8bea5ddda..4c232ee5a8e950afdcd6f4200d43764cd8ff311b 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -563,20 +563,16 @@ void QmlJSTextEditor::onDocumentUpdated(QmlJS::Document::Ptr doc) QList<QTextEdit::ExtraSelection> selections; - QTextCharFormat errorFormat; - errorFormat.setUnderlineColor(Qt::red); - errorFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline); - QTextEdit::ExtraSelection sel; - m_diagnosticMessages = doc->diagnosticMessages(); + const QList<DiagnosticMessage> diagnosticMessages = doc->diagnosticMessages(); - foreach (const DiagnosticMessage &d, m_diagnosticMessages) { - int line = d.loc.startLine; - int column = d.loc.startColumn; + foreach (const DiagnosticMessage &d, diagnosticMessages) { + if (d.isWarning()) + continue; - if (column == 0) - column = 1; + const int line = d.loc.startLine; + const int column = qMax(1U, d.loc.startColumn); QTextCursor c(document()->findBlockByNumber(line - 1)); sel.cursor = c; @@ -587,7 +583,9 @@ void QmlJSTextEditor::onDocumentUpdated(QmlJS::Document::Ptr doc) else sel.cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); - sel.format = errorFormat; + sel.format.setUnderlineColor(Qt::red); + sel.format.setUnderlineStyle(QTextCharFormat::WaveUnderline); + sel.format.setToolTip(d.message); selections.append(sel); } diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index d6970c969a571ddf3c3e4cf8ec1b739660dae83c..42ed0f91db51f3c90182d66f1099a650a3a284f5 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -125,9 +125,6 @@ public: QList<Declaration> declarations() const; QStringList keywords() const; - QList<QmlJS::DiagnosticMessage> diagnosticMessages() const - { return m_diagnosticMessages; } - virtual void unCommentSelection(); SemanticInfo semanticInfo() const { return m_semanticInfo; } @@ -178,7 +175,6 @@ private: QList<Declaration> m_declarations; // ### remove me QMap<QString, QList<QmlJS::AST::SourceLocation> > m_ids; // ### remove me int m_idsRevision; // ### remove me - QList<QmlJS::DiagnosticMessage> m_diagnosticMessages; // ### remove me QmlModelManagerInterface *m_modelManager; QmlJS::TypeSystem *m_typeSystem; QTextCharFormat m_occurrencesFormat;