diff --git a/src/plugins/qmldesigner/components/toolbar/messagemodel.cpp b/src/plugins/qmldesigner/components/toolbar/messagemodel.cpp index ae2755a603e..49ff3b8aaff 100644 --- a/src/plugins/qmldesigner/components/toolbar/messagemodel.cpp +++ b/src/plugins/qmldesigner/components/toolbar/messagemodel.cpp @@ -107,6 +107,7 @@ void MessageModel::setupTaskHub() connect(hub, &ProjectExplorer::TaskHub::categoryAdded, this, &MessageModel::addCategory); connect(hub, &ProjectExplorer::TaskHub::taskAdded, this, &MessageModel::addTask); connect(hub, &ProjectExplorer::TaskHub::taskRemoved, this, &MessageModel::removeTask); + connect(hub, &ProjectExplorer::TaskHub::tasksCleared, this, &MessageModel::clearTasks); } void MessageModel::addCategory(const ProjectExplorer::TaskCategory &category) @@ -126,7 +127,7 @@ void MessageModel::addTask(const ProjectExplorer::Task &task) void MessageModel::removeTask(const ProjectExplorer::Task &task) { for (int i = 0; std::cmp_less(i, m_tasks.size()); i++) { - if (m_tasks.at(i) == task) { + if (m_tasks[static_cast(i)] == task) { beginRemoveRows(QModelIndex(), i, i); m_tasks.erase(m_tasks.begin() + i); endRemoveRows(); @@ -135,3 +136,13 @@ void MessageModel::removeTask(const ProjectExplorer::Task &task) } } } + +void MessageModel::clearTasks(const Utils::Id &categoryId) +{ + beginResetModel(); + std::erase_if(m_tasks, [categoryId](const ProjectExplorer::Task& task) { + return task.category == categoryId; + }); + endResetModel(); + emit modelChanged(); +} diff --git a/src/plugins/qmldesigner/components/toolbar/messagemodel.h b/src/plugins/qmldesigner/components/toolbar/messagemodel.h index e6748910589..ccba4f66b68 100644 --- a/src/plugins/qmldesigner/components/toolbar/messagemodel.h +++ b/src/plugins/qmldesigner/components/toolbar/messagemodel.h @@ -44,6 +44,7 @@ private: void addCategory(const ProjectExplorer::TaskCategory &category); void addTask(const ProjectExplorer::Task &task); void removeTask(const ProjectExplorer::Task &task); + void clearTasks(const Utils::Id &categoryId); std::vector m_tasks = {}; std::unordered_map m_categories = {};