From d7cde3b22e90aee3a7b13f0667adf432141886f7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 26 Feb 2020 14:36:51 +1100 Subject: [PATCH] timelinewidget: clear block items before destruction Prevents block items signalling anything after the TimelineWidget has already been destroyed. --- app/widget/timelinewidget/timelinewidget.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index fface9274..f8cb8c398 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -122,6 +122,9 @@ TimelineWidget::TimelineWidget(QWidget *parent) : TimelineWidget::~TimelineWidget() { + // Ensure no blocks are selected before any child widgets are destroyed (prevents corrupt ViewSelectionChanged() signal) + Clear(); + qDeleteAll(tools_); } @@ -129,14 +132,14 @@ void TimelineWidget::Clear() { SetTimebase(0); - QMapIterator iterator(block_items_); + QMap::iterator iterator = block_items_.begin(); - while (iterator.hasNext()) { - iterator.next(); + while (iterator != block_items_.end()) { + TimelineViewBlockItem* item = iterator.value(); - if (iterator.value() != nullptr) { - delete iterator.value(); - } + iterator = block_items_.erase(iterator); + + delete item; } block_items_.clear();