forked from qt-creator/qt-creator
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:
@@ -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:
|
||||||
|
Reference in New Issue
Block a user