diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp index 0db5926e0fdc9f15d20a2272f0547bc199d7026d..dcebb02f6b3ca58771a2a8484539c6f2f8c27f17 100644 --- a/src/plugins/projectexplorer/taskmodel.cpp +++ b/src/plugins/projectexplorer/taskmodel.cpp @@ -114,14 +114,21 @@ QList<Task> 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<Task>::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 d977b2547f2d9d8fb09d063a302c15e6e98c50db..1dfb6733c9370e9d1cfe8345def39360dcf7b99a 100644 --- a/src/plugins/projectexplorer/taskmodel.h +++ b/src/plugins/projectexplorer/taskmodel.h @@ -116,7 +116,7 @@ private: }; QHash<Core::Id,CategoryData> m_categories; // category id to data - QList<Task> m_tasks; // all tasks (in order of insertion) + QList<Task> m_tasks; // all tasks (in order of id) QHash<QString,bool> m_fileNotFound; int m_maxSizeOfFileName;