From e98ac256c66676091afe98fc5ce2dc61bc116b49 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Fri, 3 Dec 2021 12:03:33 -0800 Subject: [PATCH] reorganized some lines to prevent a crash --- app/widget/nodeview/nodeview.cpp | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index da10d899b..955228cbe 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -310,8 +310,6 @@ void NodeView::mousePressEvent(QMouseEvent *event) if (event->button() == Qt::LeftButton) { // Sane defaults - create_edge_output_item_ = nullptr; - create_edge_input_item_ = nullptr; create_edge_already_exists_ = false; create_edge_from_output_ = true; @@ -502,16 +500,15 @@ void NodeView::mouseReleaseEvent(QMouseEvent *event) create_edge_ = nullptr; - if (create_edge_output_item_ && create_edge_input_item_) { - // Clear highlight if we set one + // Clear highlight if we set one + if (create_edge_output_item_) { + create_edge_output_item_->SetHighlighted(false); + } + if (create_edge_input_item_) { create_edge_input_item_->SetHighlighted(false); + } - // Collapse any items we expanded - for (auto it=create_edge_expanded_items_.crbegin(); it!=create_edge_expanded_items_.crend(); it++) { - CollapseItem(*it); - } - create_edge_expanded_items_.clear(); - + if (create_edge_output_item_ && create_edge_input_item_) { NodeInput &creating_input = create_edge_input_; if (creating_input.IsValid()) { // Make connection @@ -543,11 +540,17 @@ void NodeView::mouseReleaseEvent(QMouseEvent *event) creating_input.Reset(); } - - create_edge_output_item_ = nullptr; - create_edge_input_item_ = nullptr; } + create_edge_output_item_ = nullptr; + create_edge_input_item_ = nullptr; + + // Collapse any items we expanded + for (auto it=create_edge_expanded_items_.crbegin(); it!=create_edge_expanded_items_.crend(); it++) { + CollapseItem(*it); + } + create_edge_expanded_items_.clear(); + Core::instance()->undo_stack()->pushIfHasChildren(command); } @@ -1109,7 +1112,8 @@ void NodeView::PositionNewEdge(const QPoint &pos) create_edge_expanded_items_.resize(i + 1); // Expand item if possible - if (item_at_cursor && item_at_cursor->CanBeExpanded() && !item_at_cursor->IsExpanded()) { + if (item_at_cursor && item_at_cursor->CanBeExpanded() && !item_at_cursor->IsExpanded() + && (create_edge_from_output_ || !item_at_cursor->IsOutputItem())) { ExpandItem(item_at_cursor); create_edge_expanded_items_.append(item_at_cursor); }