From 8d9d24bc65f2bf94feb2b1ce05ffd2d33c797896 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 6 Feb 2019 14:47:22 +0100 Subject: [PATCH] ClangTools: Fix copy action * Location of the main diagnostic was not included. * No actual message/text of an ExplainingStepItem ended up in the tooltip. * Copy file path for FilePathItem * Copy location and text for ExplainingStepItem Change-Id: I47b890f77f5ff680ce82a75b51b598681a481385 Reviewed-by: Ivan Donchevskii --- .../clangtools/clangtoolsdiagnosticmodel.cpp | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp index 5b824f22508..657ffe36d24 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp @@ -57,6 +57,8 @@ QVariant FilePathItem::data(int column, int role) const return m_filePath; case Qt::DecorationRole: return Core::FileIconProvider::icon(m_filePath); + case Debugger::DetailedErrorView::FullTextRole: + return m_filePath; default: return QVariant(); } @@ -295,15 +297,24 @@ static QString createExplainingStepString(const ExplainingStep &explainingStep, { return createExplainingStepNumberString(number) + QLatin1Char(' ') - + explainingStep.extendedMessage + + explainingStep.message + QLatin1Char(' ') + createLocationString(explainingStep.location); } + +static QString lineColumnString(const Debugger::DiagnosticLocation &location) +{ + return QString("%1:%2").arg(QString::number(location.line), QString::number(location.column)); +} + static QString fullText(const Diagnostic &diagnostic) { - // Summary. - QString text = diagnostic.category + QLatin1String(": ") + diagnostic.type; + QString text = diagnostic.location.filePath + QLatin1Char(':'); + text += lineColumnString(diagnostic.location) + QLatin1String(": "); + if (!diagnostic.category.isEmpty()) + text += diagnostic.category + QLatin1String(": "); + text += diagnostic.type; if (diagnostic.type != diagnostic.description) text += QLatin1String(": ") + diagnostic.description; text += QLatin1Char('\n'); @@ -380,11 +391,6 @@ static QVariant iconData(const QString &type) return QVariant(); } -static QString lineColumnString(const Debugger::DiagnosticLocation &location) -{ - return QString("%1:%2").arg(QString::number(location.line), QString::number(location.column)); -} - QVariant DiagnosticItem::data(int column, int role) const { if (column == DiagnosticView::FixItColumn) { @@ -509,8 +515,10 @@ QVariant ExplainingStepItem::data(int column, int role) const switch (role) { case Debugger::DetailedErrorView::LocationRole: return QVariant::fromValue(m_step.location); - case Debugger::DetailedErrorView::FullTextRole: - return fullText(static_cast(parent())->diagnostic()); + case Debugger::DetailedErrorView::FullTextRole: { + return QString("%1:%2: %3") + .arg(m_step.location.filePath, lineColumnString(m_step.location), m_step.message); + } case ClangToolsDiagnosticModel::TextRole: return m_step.message; case ClangToolsDiagnosticModel::DiagnosticRole: