diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp index 0db5926e0fd..dcebb02f6b3 100644 --- a/src/plugins/projectexplorer/taskmodel.cpp +++ b/src/plugins/projectexplorer/taskmodel.cpp @@ -114,14 +114,21 @@ QList TaskModel::tasks(const Core::Id &categoryId) const return taskList; } +bool sortById(const Task &task, unsigned int id) +{ + return task.taskId < id; +} + void TaskModel::addTask(const Task &task) { Q_ASSERT(m_categories.keys().contains(task.category)); CategoryData &data = m_categories[task.category]; CategoryData &global = m_categories[Core::Id()]; - beginInsertRows(QModelIndex(), m_tasks.count(), m_tasks.count()); - m_tasks.append(task); + QList::iterator it = qLowerBound(m_tasks.begin(), m_tasks.end(),task.taskId, sortById); + int i = it - m_tasks.begin(); + beginInsertRows(QModelIndex(), i, i); + m_tasks.insert(it, task); data.addTask(task); global.addTask(task); endInsertRows(); diff --git a/src/plugins/projectexplorer/taskmodel.h b/src/plugins/projectexplorer/taskmodel.h index d977b2547f2..1dfb6733c93 100644 --- a/src/plugins/projectexplorer/taskmodel.h +++ b/src/plugins/projectexplorer/taskmodel.h @@ -116,7 +116,7 @@ private: }; QHash m_categories; // category id to data - QList m_tasks; // all tasks (in order of insertion) + QList m_tasks; // all tasks (in order of id) QHash m_fileNotFound; int m_maxSizeOfFileName;