From d4dc3aebfe9a414669dd03ee6515386211fce02b Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 18 Mar 2018 10:11:35 +0100 Subject: [PATCH] fix possible crash with draggers in transform edit mode of a view provider --- src/Gui/ViewProviderDragger.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Gui/ViewProviderDragger.cpp b/src/Gui/ViewProviderDragger.cpp index e20dc516b2..4307db0a29 100644 --- a/src/Gui/ViewProviderDragger.cpp +++ b/src/Gui/ViewProviderDragger.cpp @@ -169,16 +169,21 @@ void ViewProviderDragger::setEditViewer(Gui::View3DInventorViewer* viewer, int M { SoPickStyle *rootPickStyle = new SoPickStyle(); rootPickStyle->style = SoPickStyle::UNPICKABLE; - static_cast(viewer->getSceneGraph())->insertChild(rootPickStyle, 0); + SoFCUnifiedSelection* selection = static_cast(viewer->getSceneGraph()); + selection->insertChild(rootPickStyle, 0); + selection->selectionRole.setValue(false); csysDragger->setUpAutoScale(viewer->getSoRenderManager()->getCamera()); } } void ViewProviderDragger::unsetEditViewer(Gui::View3DInventorViewer* viewer) { - SoNode *child = static_cast(viewer->getSceneGraph())->getChild(0); - if (child && child->isOfType(SoPickStyle::getClassTypeId())) - static_cast(viewer->getSceneGraph())->removeChild(child); + SoFCUnifiedSelection* selection = static_cast(viewer->getSceneGraph()); + SoNode *child = selection->getChild(0); + if (child && child->isOfType(SoPickStyle::getClassTypeId())) { + selection->removeChild(child); + selection->selectionRole.setValue(true); + } } void ViewProviderDragger::dragStartCallback(void *, SoDragger *)