diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index d9bf38688ac..04cf8b786d0 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -3154,6 +3154,21 @@ void AspectList::removeItem(const std::shared_ptr &item) actualRemoveItem(item); } +void AspectList::clear() +{ + if (undoStack()) { + undoStack()->beginMacro("Clear"); + + for (auto item : volatileItems()) + undoStack()->push(new RemoveItemCommand(this, item)); + + undoStack()->endMacro(); + } else { + for (auto item : volatileItems()) + actualRemoveItem(item); + } +} + void AspectList::apply() { d->items = d->volatileItems; diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index ccdaadcc631..d5d47a79d7e 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -1031,6 +1031,7 @@ public: void removeItem(const std::shared_ptr &item); void actualRemoveItem(const std::shared_ptr &item); + void clear(); void apply() override;