File 003-todo_filepath-4.9.2.patch of Package qtcreator
diff -uprN qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsmodel.cpp qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsmodel.cpp
--- qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsmodel.cpp 2019-05-12 18:36:45.228069412 +0200
+++ qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsmodel.cpp 2019-05-11 12:16:37.433845134 +0200
@@ -31,6 +31,9 @@
#include <utils/theme/theme.h>
+#include <projectexplorer/project.h>
+#include <coreplugin/documentmanager.h>
+
#include <QIcon>
using namespace Utils;
@@ -44,6 +47,28 @@ TodoItemsModel::TodoItemsModel(QObject *
{
}
+void TodoItemsModel::startupProjectChanged(ProjectExplorer::Project *project)
+{
+ if(project)
+ m_projectDir = QDir(project->projectDirectory().toString());
+
+ m_defaultProjectsDir = QDir(Core::DocumentManager::useProjectsDirectory()
+ ? Core::DocumentManager::projectsDirectory().toString()
+ : QString()).canonicalPath();
+}
+
+QString TodoItemsModel::stripProjectPath(const QString& filename) const
+{
+ QString relativePath = m_projectDir.relativeFilePath(filename);
+
+ if(relativePath.startsWith(QString::fromUtf8("..")))
+ relativePath = QString::fromUtf8("~/") + m_defaultProjectsDir.relativeFilePath(filename);
+ if(relativePath.startsWith(QString::fromUtf8("~/..")))
+ relativePath = filename;
+
+ return relativePath;
+}
+
void TodoItemsModel::setTodoItemsList(QList<TodoItem> *list)
{
m_todoItemsList = list;
@@ -85,6 +110,7 @@ QVariant TodoItemsModel::data(const QMod
case Constants::OUTPUT_COLUMN_TEXT:
switch (role) {
+ case Qt::ToolTipRole:
case Qt::DisplayRole:
return item.text;
case Qt::DecorationRole:
@@ -94,11 +120,13 @@ QVariant TodoItemsModel::data(const QMod
case Constants::OUTPUT_COLUMN_FILE:
if (role == Qt::DisplayRole)
+ return stripProjectPath(item.file.toUserOutput());
+ if (role == Qt::ToolTipRole)
return item.file.toUserOutput();
break;
case Constants::OUTPUT_COLUMN_LINE:
- if (role == Qt::DisplayRole)
+ if ((role == Qt::DisplayRole) || (role == Qt::ToolTipRole))
return item.line;
break;
}
diff -uprN qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsmodel.h qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsmodel.h
--- qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsmodel.h 2019-05-12 18:36:45.240069278 +0200
+++ qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsmodel.h 2019-05-12 18:39:02.142603340 +0200
@@ -30,6 +30,11 @@
#include <QAbstractTableModel>
#include <QList>
+#include <QDir>
+
+namespace ProjectExplorer {
+ class Project;
+}
namespace Todo {
namespace Internal {
@@ -51,10 +56,19 @@ public:
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
void todoItemsListUpdated();
+public slots:
+ // Needed to keep track of the active project root and of the default project dir :
+ void startupProjectChanged(ProjectExplorer::Project* project);
+
private:
+ // Wipe the project root (or the defaults document dir) of the filename :
+ QString stripProjectPath(const QString& filename) const;
+
QList<TodoItem> *m_todoItemsList = nullptr;
Constants::OutputColumnIndex m_currentSortColumn;
Qt::SortOrder m_currentSortOrder = Qt::AscendingOrder;
+ QDir m_projectDir, // This is the root path of the active project.
+ m_defaultProjectsDir; // This is the defaut path for Qt projects.
};
}
diff -uprN qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsprovider.cpp qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsprovider.cpp
--- qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todoitemsprovider.cpp 2019-05-12 18:36:45.240069278 +0200
+++ qt-creator-opensource-src-4.9.0/src/plugins/todo/todoitemsprovider.cpp 2019-05-11 12:16:37.433845134 +0200
@@ -239,6 +239,9 @@ void TodoItemsProvider::setupItemsModel(
{
m_itemsModel = new TodoItemsModel(this);
m_itemsModel->setTodoItemsList(&m_itemsList);
+
+ connect(SessionManager::instance(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
+ m_itemsModel, SLOT(startupProjectChanged(ProjectExplorer::Project*)));
}
}
diff -uprN qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todooutputpane.cpp qt-creator-opensource-src-4.9.0/src/plugins/todo/todooutputpane.cpp
--- qt-creator-opensource-src-4.9.0-orig/src/plugins/todo/todooutputpane.cpp 2019-05-12 18:36:45.240069278 +0200
+++ qt-creator-opensource-src-4.9.0/src/plugins/todo/todooutputpane.cpp 2019-05-11 12:16:37.433845134 +0200
@@ -175,9 +175,9 @@ void TodoOutputPane::todoTreeViewClicked
int row = index.row();
TodoItem item;
- item.text = index.sibling(row, Constants::OUTPUT_COLUMN_TEXT).data().toString();
- item.file = Utils::FileName::fromUserInput(index.sibling(row, Constants::OUTPUT_COLUMN_FILE).data().toString());
- item.line = index.sibling(row, Constants::OUTPUT_COLUMN_LINE).data().toInt();
+ item.text = index.sibling(row, Constants::OUTPUT_COLUMN_TEXT).data(Qt::ToolTipRole).toString();
+ item.file = Utils::FileName::fromUserInput(index.sibling(row, Constants::OUTPUT_COLUMN_FILE).data(Qt::ToolTipRole).toString());
+ item.line = index.sibling(row, Constants::OUTPUT_COLUMN_LINE).data(Qt::ToolTipRole).toInt();
item.color = index.data(Qt::TextColorRole).value<QColor>();
item.iconType = static_cast<IconType>(index.sibling(row, Constants::OUTPUT_COLUMN_TEXT)
.data(Qt::UserRole).toInt());