diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 46af301e6..bfcff14bb 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -64,7 +64,7 @@ endif() target_compile_definitions(${OLIVE_TARGET} PRIVATE ${OLIVE_DEFINITIONS}) if(MSVC) - target_compile_options(${OLIVE_TARGET} PRIVATE /WX /O2 /experimental:external /external:anglebrackets /external:W0) + target_compile_options(${OLIVE_TARGET} PRIVATE /WX /experimental:external /external:anglebrackets /external:W0 "$<$:/O2>") else() target_compile_options(${OLIVE_TARGET} PRIVATE -O2 -Werror -Wuninitialized -pedantic-errors -Wall -Wextra -Wconversion -Wsign-conversion) endif() diff --git a/app/node/node.cpp b/app/node/node.cpp index 5736ff5b4..695a58ca2 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -172,9 +172,6 @@ void Node::CopyInputs(Node *source, Node *destination, bool include_connections) { Q_ASSERT(source->id() == destination->id()); - source->LockUserInput(); - destination->LockUserInput(); - const QList& src_param = source->params_; const QList& dst_param = destination->params_; @@ -186,12 +183,9 @@ void Node::CopyInputs(Node *source, Node *destination, bool include_connections) NodeInput* dst = static_cast(dst_param.at(i)); - NodeInput::CopyValues(src, dst, include_connections, false); + NodeInput::CopyValues(src, dst, include_connections, true); } } - - source->UnlockUserInput(); - destination->UnlockUserInput(); } void DuplicateConnectionsBetweenListsInternal(const QList &source, const QList &destination, NodeInput* source_input, NodeInput* dest_input) diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 7bafafc00..db41c7a45 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -362,7 +362,7 @@ void TimelineWidget::SplitAtPlayhead() foreach (TrackOutput* track, timeline_node_->Tracks()) { Block* b = track->BlockContainingTime(playhead_time); - if (b) { + if (b && b->type() == Block::kClip) { bool selected = false; // See if this block is selected diff --git a/app/widget/timelinewidget/tool/razor.cpp b/app/widget/timelinewidget/tool/razor.cpp index 52558d02b..9b41faedc 100644 --- a/app/widget/timelinewidget/tool/razor.cpp +++ b/app/widget/timelinewidget/tool/razor.cpp @@ -67,6 +67,7 @@ void TimelineWidget::RazorTool::MouseRelease(TimelineViewMouseEvent *event) // Ensure there's a valid block here if (block_at_time + && block_at_time->type() == Block::kClip && !blocks_to_split.contains(block_at_time)) { blocks_to_split.append(block_at_time); diff --git a/app/widget/timelinewidget/undo/undo.cpp b/app/widget/timelinewidget/undo/undo.cpp index eb5c0dd0d..dd46cbf8f 100644 --- a/app/widget/timelinewidget/undo/undo.cpp +++ b/app/widget/timelinewidget/undo/undo.cpp @@ -351,7 +351,7 @@ BlockSplitCommand::BlockSplitCommand(TrackOutput* track, Block *block, rational old_length_(block->length()), point_(point) { - Q_ASSERT(point > block_->in() && point < block_->out()); + Q_ASSERT(point > block_->in() && point < block_->out() && block_->type() == Block::kClip); // Ensures that this block is deleted if this action is undone new_block_ = static_cast(block_->copy());