diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index 9e77af19a..5a540c83c 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -52,7 +52,7 @@ NodeView::NodeView(QWidget *parent) : SetFlowDirection(NodeViewCommon::kTopToBottom); - scene_.setSceneRect(-1000000, -1000000, 2000000, 2000000); + scene_.setSceneRect(-100, -100, 200, 200); } NodeView::~NodeView() @@ -191,6 +191,10 @@ void NodeView::SelectWithDependencies(QList nodes) void NodeView::SelectBlocks(const QList &blocks) { + if (selected_blocks_ == blocks) { + return; + } + // Remove temporary associations foreach (Block* b, selected_blocks_) { if (!blocks.contains(b)) { @@ -200,6 +204,9 @@ void NodeView::SelectBlocks(const QList &blocks) selected_blocks_ = blocks; + // Block scene signals while our selection is changing a lot + scene_.blockSignals(true); + if (filter_mode_ == kFilterShowSelectedBlocks) { UpdateBlockFilter(); } @@ -214,6 +221,10 @@ void NodeView::SelectBlocks(const QList &blocks) SelectWithDependencies(nodes); + // Stop blocking signals and send a change signal now that all of our processing is done + scene_.blockSignals(false); + SceneSelectionChangedSlot(); + if (!blocks.isEmpty()) { NodeViewItem* item = scene_.NodeToUIObject(blocks.first()); if (item) {