From 32e455c12e96311b52270599b95045d3aba91176 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 16 Nov 2020 22:16:53 +0100 Subject: [PATCH] Fix a crash when changing filter for clazy analyzer Fixes: QTCREATORBUG-24935 Change-Id: I94ff4f1a5bdd07c8055608048773b4a81a81fcb3 Reviewed-by: David Schulz --- src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp | 12 +++++++++--- src/plugins/clangtools/clangtoolsdiagnosticmodel.h | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp index aa4fbede31d..4d3acb80a4d 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp @@ -313,6 +313,12 @@ DiagnosticItem::~DiagnosticItem() delete m_mark; } +void DiagnosticItem::setTextMarkVisible(bool visible) +{ + if (m_mark) + m_mark->setVisible(visible); +} + Qt::ItemFlags DiagnosticItem::flags(int column) const { const Qt::ItemFlags itemFlags = TreeItem::flags(column); @@ -630,7 +636,7 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s // Filtered out? if (m_filterOptions && !m_filterOptions->checks.contains(diag.name)) { - diagnosticItem->textMark()->setVisible(false); + diagnosticItem->setTextMarkVisible(false); return false; } @@ -643,11 +649,11 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s if (fi.isRelative()) filePath = m_lastProjectDirectory.toString() + QLatin1Char('/') + filePath; if (filePath == diag.location.filePath) { - diagnosticItem->textMark()->setVisible(false); + diagnosticItem->setTextMarkVisible(false); return false; } } - diagnosticItem->textMark()->setVisible(true); + diagnosticItem->setTextMarkVisible(true); return true; } diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h index 0e21006cab3..39bd84dcb65 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h @@ -74,7 +74,7 @@ public: ~DiagnosticItem() override; const Diagnostic &diagnostic() const { return m_diagnostic; } - TextEditor::TextMark *textMark() { return m_mark; } + void setTextMarkVisible(bool visible); FixitStatus fixItStatus() const { return m_fixitStatus; } void setFixItStatus(const FixitStatus &status);