File 003-todo_filepath-3.4.2.patch of Package qtcreator
diff -uprN qt-creator-opensource-src-3.4.2-orig/src/plugins/todo/todoitemsmodel.cpp qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsmodel.cpp
--- qt-creator-opensource-src-3.4.2-orig/src/plugins/todo/todoitemsmodel.cpp 2015-06-22 17:07:17.000000000 +0200
+++ qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsmodel.cpp 2015-07-22 21:48:28.195133145 +0200
@@ -36,6 +36,9 @@
#include <utils/theme/theme.h>
+#include <projectexplorer/project.h>
+#include <coreplugin/documentmanager.h>
+
#include <QIcon>
using namespace Utils;
@@ -51,6 +54,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()
+ : QString::null).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;
@@ -96,6 +121,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:
@@ -105,11 +131,13 @@ QVariant TodoItemsModel::data(const QMod
case Constants::OUTPUT_COLUMN_FILE:
if (role == Qt::DisplayRole)
+ return stripProjectPath(item.file);
+ if(role == Qt::ToolTipRole)
return item.file;
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-3.4.2-orig/src/plugins/todo/todoitemsmodel.h qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsmodel.h
--- qt-creator-opensource-src-3.4.2-orig/src/plugins/todo/todoitemsmodel.h 2015-06-22 17:07:17.000000000 +0200
+++ qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsmodel.h 2015-07-22 19:08:49.471949542 +0200
@@ -37,6 +37,12 @@
#include <QAbstractTableModel>
#include <QList>
+#include <QDir>
+
+namespace ProjectExplorer{
+ class Project;
+}
+
namespace Todo {
namespace Internal {
@@ -58,11 +64,18 @@ public:
public slots:
void todoItemsListUpdated();
+ // 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;
Constants::OutputColumnIndex m_currentSortColumn;
Qt::SortOrder m_currentSortOrder;
+ 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-3.4.2-orig/src/plugins/todo/todoitemsprovider.cpp qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsprovider.cpp
--- qt-creator-opensource-src-3.4.2-orig/src/plugins/todo/todoitemsprovider.cpp 2015-06-22 17:07:17.000000000 +0200
+++ qt-creator-opensource-src-3.4.2/src/plugins/todo/todoitemsprovider.cpp 2015-07-22 19:08:49.472949534 +0200
@@ -179,6 +179,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-3.4.2-orig/src/plugins/todo/todooutputpane.cpp qt-creator-opensource-src-3.4.2/src/plugins/todo/todooutputpane.cpp
--- qt-creator-opensource-src-3.4.2-orig/src/plugins/todo/todooutputpane.cpp 2015-06-22 17:07:17.000000000 +0200
+++ qt-creator-opensource-src-3.4.2/src/plugins/todo/todooutputpane.cpp 2015-07-22 19:08:49.472949534 +0200
@@ -166,9 +166,9 @@ void TodoOutputPane::todoTreeViewClicked
int row = index.row();
TodoItem item;
- item.text = index.sibling(row, Constants::OUTPUT_COLUMN_TEXT).data().toString();
- item.file = 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 = 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::BackgroundColorRole).value<QColor>();
item.iconResource = index.sibling(row, Constants::OUTPUT_COLUMN_TEXT).data(Qt::DecorationRole).toString();