diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 4ae65b85a77cb927bc3e7be916a2cb47384cb78a..1be6b8ec42f8ff97d75a3f091249d1147941f001 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -111,6 +111,7 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + Task task(const QModelIndex &index) const; QStringList categoryIds() const; QString categoryDisplayName(const QString &categoryId) const; @@ -391,11 +392,16 @@ QVariant TaskModel::data(const QModelIndex &index, int role) const } else if (role == TaskModel::Icon) { return taskTypeIcon(m_tasks.at(index.row()).type); } else if (role == TaskModel::Task_t) { - return QVariant::fromValue(m_tasks.at(index.row())); + return QVariant::fromValue(task(index)); } return QVariant(); } +Task TaskModel::task(const QModelIndex &index) const +{ + return m_tasks.at(index.row()); +} + QStringList TaskModel::categoryIds() const { return m_categories.keys(); @@ -634,7 +640,7 @@ void TaskWindow::triggerDefaultHandler(const QModelIndex &index) } } Q_ASSERT(d->m_defaultHandler); - Task task(index.data(Internal::TaskModel::Task_t).value<Task>()); + Task task(d->m_model->task(index)); if (d->m_defaultHandler->canHandle(task)) { d->m_defaultHandler->handle(task); } else { @@ -651,7 +657,7 @@ void TaskWindow::showContextMenu(const QPoint &position) d->m_contextMenuIndex = index; cleanContextMenu(); - Task task = index.data(Internal::TaskModel::Task_t).value<Task>(); + Task task = d->m_model->task(index); QList<ITaskHandler *> handlers = ExtensionSystem::PluginManager::instance()->getObjects<ITaskHandler>(); foreach(ITaskHandler *handler, handlers) { @@ -668,7 +674,7 @@ void TaskWindow::showContextMenu(const QPoint &position) void TaskWindow::contextMenuEntryTriggered(QAction *action) { if (action->isEnabled()) { - Task task = d->m_contextMenuIndex.data(Internal::TaskModel::Task_t).value<Task>(); + Task task = d->m_model->task(d->m_contextMenuIndex); ITaskHandler *handler = qobject_cast<ITaskHandler*>(action->data().value<QObject*>()); if (!handler) return;