From 78d5314c0a76d25b7239a789353db2a5a8121d23 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Wed, 11 May 2022 13:44:59 -0700 Subject: [PATCH] seekablewidget: don't allow deleting if dragging Fixes potential crash if a user does this --- app/widget/keyframeview/keyframeview.cpp | 12 +++++++----- app/widget/timeruler/seekablewidget.cpp | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/widget/keyframeview/keyframeview.cpp b/app/widget/keyframeview/keyframeview.cpp index fba3b6299..51ec2e724 100644 --- a/app/widget/keyframeview/keyframeview.cpp +++ b/app/widget/keyframeview/keyframeview.cpp @@ -53,13 +53,15 @@ KeyframeView::KeyframeView(QWidget *parent) : void KeyframeView::DeleteSelected() { - MultiUndoCommand* command = new MultiUndoCommand(); + if (!selection_manager_.IsDragging()) { + MultiUndoCommand* command = new MultiUndoCommand(); - foreach (NodeKeyframe *key, GetSelectedKeyframes()) { - command->add_child(new NodeParamRemoveKeyframeCommand(key)); + foreach (NodeKeyframe *key, GetSelectedKeyframes()) { + command->add_child(new NodeParamRemoveKeyframeCommand(key)); + } + + Core::instance()->undo_stack()->pushIfHasChildren(command); } - - Core::instance()->undo_stack()->pushIfHasChildren(command); } KeyframeView::NodeConnections KeyframeView::AddKeyframesOfNode(Node *n) diff --git a/app/widget/timeruler/seekablewidget.cpp b/app/widget/timeruler/seekablewidget.cpp index 6a647bb5c..e915375fd 100644 --- a/app/widget/timeruler/seekablewidget.cpp +++ b/app/widget/timeruler/seekablewidget.cpp @@ -90,13 +90,15 @@ void SeekableWidget::ConnectTimelinePoints(TimelinePoints *points) void SeekableWidget::DeleteSelected() { - MultiUndoCommand* command = new MultiUndoCommand(); + if (!selection_manager_.IsDragging()) { + MultiUndoCommand* command = new MultiUndoCommand(); - foreach (TimelineMarker *marker, selection_manager_.GetSelectedObjects()) { - command->add_child(new MarkerRemoveCommand(marker)); + foreach (TimelineMarker *marker, selection_manager_.GetSelectedObjects()) { + command->add_child(new MarkerRemoveCommand(marker)); + } + + Core::instance()->undo_stack()->pushIfHasChildren(command); } - - Core::instance()->undo_stack()->pushIfHasChildren(command); } bool SeekableWidget::CopySelected(bool cut)