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();
 
openSUSE Build Service is sponsored by