From 07810aed49b82b16b4e1e1d91efd139ce6b1f29f Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 4 Nov 2018 11:54:40 +0100 Subject: [PATCH] fix blocking of SelectionObserver --- src/Gui/Selection.cpp | 14 ++++++++------ src/Gui/Selection.h | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index 8d1057b9d0..2e6587e420 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -53,7 +53,7 @@ FC_LOG_LEVEL_INIT("Selection",false,true,true) using namespace Gui; using namespace std; -SelectionObserver::SelectionObserver() : blocker(connectSelection, false) +SelectionObserver::SelectionObserver() : blockSelection(false) { attachSelection(); } @@ -65,17 +65,17 @@ SelectionObserver::~SelectionObserver() bool SelectionObserver::blockConnection(bool block) { - bool ok = connectSelection.blocked(); + bool ok = blockSelection; if (block) - blocker.block(); + blockSelection = true; else - blocker.unblock(); + blockSelection = false; return ok; } bool SelectionObserver::isConnectionBlocked() const { - return connectSelection.blocked(); + return blockSelection; } void SelectionObserver::attachSelection() @@ -87,7 +87,9 @@ void SelectionObserver::attachSelection() } void SelectionObserver::_onSelectionChanged(const SelectionChanges& msg) { - try { + try { + if (blockSelection) + return; onSelectionChanged(msg); } catch (Base::Exception &e) { e.ReportException(); diff --git a/src/Gui/Selection.h b/src/Gui/Selection.h index 54266f0b07..f5f69391ec 100644 --- a/src/Gui/Selection.h +++ b/src/Gui/Selection.h @@ -147,7 +147,7 @@ private: private: typedef boost::signals2::connection Connection; Connection connectSelection; - boost::signals2::shared_connection_block blocker; + bool blockSelection; }; /**