diff --git a/src/timeline2/model/timelinemodel.cpp b/src/timeline2/model/timelinemodel.cpp index 77d2db9d4a1b3737ad5ff630b986b7b11afd3e5b..1e2603ac6258ced9348ffd9dc40b27326e7d340c 100644 --- a/src/timeline2/model/timelinemodel.cpp +++ b/src/timeline2/model/timelinemodel.cpp @@ -3015,11 +3015,18 @@ void TimelineModel::requestRemoveFromSelection(int itemId) { QWriteLocker locker(&m_lock); TRACE(itemId); + std::unordered_set all_items = {itemId}; + int parentGroup = m_groups->getDirectAncestor(itemId); + if (parentGroup > -1 && m_groups->getType(parentGroup) != GroupType::Selection) { + all_items = m_groups->getLeaves(parentGroup); + } std::unordered_set selection = getCurrentSelection(); - if (selection.count(itemId) > 0) { - selection.erase(itemId); - requestSetSelection(selection); + for (int current_itemId : all_items) { + if (selection.count(current_itemId) > 0) { + selection.erase(current_itemId); + } } + requestSetSelection(selection); } bool TimelineModel::requestSetSelection(const std::unordered_set &ids)