There's no need to store the diagnostic messages in the editor.

Store the error message in the QTextCharFormat of the extra selection.
This commit is contained in:
Roberto Raggi
2010-01-26 14:03:37 +01:00
parent f995022af7
commit e622d70617
3 changed files with 12 additions and 20 deletions

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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;