From 7ae37511a233fda76f286f931e8373e914037c05 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 11 Dec 2019 19:31:18 +1100 Subject: [PATCH] fixed segfault when selecting graphics items that aren't actually block items --- app/widget/timelinewidget/timelinewidget.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 9578e239f..89ab75267 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -62,7 +62,7 @@ TimelineWidget::TimelineWidget(QWidget *parent) : tools_.replace(olive::tool::kZoom, std::make_shared(this)); //tools_.replace(olive::tool::kTransition, new (this)); FIXME: Implement //tools_.replace(olive::tool::kRecord, new PointerTool(this)); FIXME: Implement - //tools_.replace(olive::tool::kAdd, new PointerTool(this)); FIXME: Implement + tools_.replace(olive::tool::kAdd, std::make_shared(this)); import_tool_ = std::make_shared(this); @@ -756,8 +756,13 @@ void TimelineWidget::MoveRubberBandSelect(bool select_links) } foreach (QGraphicsItem* item, new_selected_list) { - TimelineViewBlockItem* block_item = static_cast(item); - if (GetTrackFromReference(block_item->Track())->IsLocked()) { + TimelineViewBlockItem* block_item = dynamic_cast(item); + if (!block_item) { + continue; + } + + TrackOutput* t = GetTrackFromReference(block_item->Track()); + if (t && t->IsLocked()) { continue; }