Fix a crash when changing filter for clazy analyzer

Fixes: QTCREATORBUG-24935
Change-Id: I94ff4f1a5bdd07c8055608048773b4a81a81fcb3
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Jarek Kobus
2020-11-16 22:16:53 +01:00
parent eede69e313
commit 32e455c12e
2 changed files with 10 additions and 4 deletions

View File

@@ -313,6 +313,12 @@ DiagnosticItem::~DiagnosticItem()
delete m_mark; delete m_mark;
} }
void DiagnosticItem::setTextMarkVisible(bool visible)
{
if (m_mark)
m_mark->setVisible(visible);
}
Qt::ItemFlags DiagnosticItem::flags(int column) const Qt::ItemFlags DiagnosticItem::flags(int column) const
{ {
const Qt::ItemFlags itemFlags = TreeItem::flags(column); const Qt::ItemFlags itemFlags = TreeItem::flags(column);
@@ -630,7 +636,7 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s
// Filtered out? // Filtered out?
if (m_filterOptions && !m_filterOptions->checks.contains(diag.name)) { if (m_filterOptions && !m_filterOptions->checks.contains(diag.name)) {
diagnosticItem->textMark()->setVisible(false); diagnosticItem->setTextMarkVisible(false);
return false; return false;
} }
@@ -643,11 +649,11 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s
if (fi.isRelative()) if (fi.isRelative())
filePath = m_lastProjectDirectory.toString() + QLatin1Char('/') + filePath; filePath = m_lastProjectDirectory.toString() + QLatin1Char('/') + filePath;
if (filePath == diag.location.filePath) { if (filePath == diag.location.filePath) {
diagnosticItem->textMark()->setVisible(false); diagnosticItem->setTextMarkVisible(false);
return false; return false;
} }
} }
diagnosticItem->textMark()->setVisible(true); diagnosticItem->setTextMarkVisible(true);
return true; return true;
} }

View File

@@ -74,7 +74,7 @@ public:
~DiagnosticItem() override; ~DiagnosticItem() override;
const Diagnostic &diagnostic() const { return m_diagnostic; } const Diagnostic &diagnostic() const { return m_diagnostic; }
TextEditor::TextMark *textMark() { return m_mark; } void setTextMarkVisible(bool visible);
FixitStatus fixItStatus() const { return m_fixitStatus; } FixitStatus fixItStatus() const { return m_fixitStatus; }
void setFixItStatus(const FixitStatus &status); void setFixItStatus(const FixitStatus &status);