From d89d1808b71a6a1eea2e4ef50516b2feedef7135 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 13 Feb 2015 22:26:04 +0100 Subject: [PATCH] + fixes #0001945: selection out of sync with viewer --- src/Gui/SoFCUnifiedSelection.cpp | 48 +++++++++++++++----------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/Gui/SoFCUnifiedSelection.cpp b/src/Gui/SoFCUnifiedSelection.cpp index 8c109ee9c..8b11f065d 100644 --- a/src/Gui/SoFCUnifiedSelection.cpp +++ b/src/Gui/SoFCUnifiedSelection.cpp @@ -261,32 +261,30 @@ void SoFCUnifiedSelection::doAction(SoAction *action) if (selaction->SelChange.Type == SelectionChanges::AddSelection || selaction->SelChange.Type == SelectionChanges::RmvSelection) { // selection changes inside the 3d view are handled in handleEvent() - if (!currenthighlight) { - App::Document* doc = App::GetApplication().getDocument(selaction->SelChange.pDocName); - App::DocumentObject* obj = doc->getObject(selaction->SelChange.pObjectName); - ViewProvider*vp = Application::Instance->getViewProvider(obj); - if (vp && vp->useNewSelectionModel() && vp->isSelectable()) { - SoDetail* detail = vp->getDetail(selaction->SelChange.pSubName); - SoSelectionElementAction::Type type = SoSelectionElementAction::None; - if (selaction->SelChange.Type == SelectionChanges::AddSelection) { - if (detail) - type = SoSelectionElementAction::Append; - else - type = SoSelectionElementAction::All; - } - else { - if (detail) - type = SoSelectionElementAction::Remove; - else - type = SoSelectionElementAction::None; - } - - SoSelectionElementAction action(type); - action.setColor(this->colorSelection.getValue()); - action.setElement(detail); - action.apply(vp->getRoot()); - delete detail; + App::Document* doc = App::GetApplication().getDocument(selaction->SelChange.pDocName); + App::DocumentObject* obj = doc->getObject(selaction->SelChange.pObjectName); + ViewProvider*vp = Application::Instance->getViewProvider(obj); + if (vp && vp->useNewSelectionModel() && vp->isSelectable()) { + SoDetail* detail = vp->getDetail(selaction->SelChange.pSubName); + SoSelectionElementAction::Type type = SoSelectionElementAction::None; + if (selaction->SelChange.Type == SelectionChanges::AddSelection) { + if (detail) + type = SoSelectionElementAction::Append; + else + type = SoSelectionElementAction::All; } + else { + if (detail) + type = SoSelectionElementAction::Remove; + else + type = SoSelectionElementAction::None; + } + + SoSelectionElementAction action(type); + action.setColor(this->colorSelection.getValue()); + action.setElement(detail); + action.apply(vp->getRoot()); + delete detail; } } else if (selaction->SelChange.Type == SelectionChanges::ClrSelection ||