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 <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-02-06 14:47:22 +01:00
parent 9cfc4a68db
commit 8d9d24bc65

View File

@@ -57,6 +57,8 @@ QVariant FilePathItem::data(int column, int role) const
return m_filePath; return m_filePath;
case Qt::DecorationRole: case Qt::DecorationRole:
return Core::FileIconProvider::icon(m_filePath); return Core::FileIconProvider::icon(m_filePath);
case Debugger::DetailedErrorView::FullTextRole:
return m_filePath;
default: default:
return QVariant(); return QVariant();
} }
@@ -295,15 +297,24 @@ static QString createExplainingStepString(const ExplainingStep &explainingStep,
{ {
return createExplainingStepNumberString(number) return createExplainingStepNumberString(number)
+ QLatin1Char(' ') + QLatin1Char(' ')
+ explainingStep.extendedMessage + explainingStep.message
+ QLatin1Char(' ') + QLatin1Char(' ')
+ createLocationString(explainingStep.location); + 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) static QString fullText(const Diagnostic &diagnostic)
{ {
// Summary. QString text = diagnostic.location.filePath + QLatin1Char(':');
QString text = diagnostic.category + QLatin1String(": ") + diagnostic.type; text += lineColumnString(diagnostic.location) + QLatin1String(": ");
if (!diagnostic.category.isEmpty())
text += diagnostic.category + QLatin1String(": ");
text += diagnostic.type;
if (diagnostic.type != diagnostic.description) if (diagnostic.type != diagnostic.description)
text += QLatin1String(": ") + diagnostic.description; text += QLatin1String(": ") + diagnostic.description;
text += QLatin1Char('\n'); text += QLatin1Char('\n');
@@ -380,11 +391,6 @@ static QVariant iconData(const QString &type)
return QVariant(); 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 QVariant DiagnosticItem::data(int column, int role) const
{ {
if (column == DiagnosticView::FixItColumn) { if (column == DiagnosticView::FixItColumn) {
@@ -509,8 +515,10 @@ QVariant ExplainingStepItem::data(int column, int role) const
switch (role) { switch (role) {
case Debugger::DetailedErrorView::LocationRole: case Debugger::DetailedErrorView::LocationRole:
return QVariant::fromValue(m_step.location); return QVariant::fromValue(m_step.location);
case Debugger::DetailedErrorView::FullTextRole: case Debugger::DetailedErrorView::FullTextRole: {
return fullText(static_cast<DiagnosticItem *>(parent())->diagnostic()); return QString("%1:%2: %3")
.arg(m_step.location.filePath, lineColumnString(m_step.location), m_step.message);
}
case ClangToolsDiagnosticModel::TextRole: case ClangToolsDiagnosticModel::TextRole:
return m_step.message; return m_step.message;
case ClangToolsDiagnosticModel::DiagnosticRole: case ClangToolsDiagnosticModel::DiagnosticRole: