diff --git a/src/Gui/MouseSelection.cpp b/src/Gui/MouseSelection.cpp index 41f1cae41..2aec13351 100644 --- a/src/Gui/MouseSelection.cpp +++ b/src/Gui/MouseSelection.cpp @@ -53,7 +53,7 @@ AbstractMouseSelection::AbstractMouseSelection() : _pcView3D(0) void AbstractMouseSelection::grabMouseModel( Gui::View3DInventorViewer* viewer ) { - _pcView3D=viewer; + _pcView3D = viewer; m_cPrevCursor = _pcView3D->getWidget()->cursor(); // do initialization of your mousemodel @@ -62,11 +62,13 @@ void AbstractMouseSelection::grabMouseModel( Gui::View3DInventorViewer* viewer ) void AbstractMouseSelection::releaseMouseModel() { - // do termination of your mousemodel - terminate(); + if (_pcView3D) { + // do termination of your mousemodel + terminate(); - _pcView3D->getWidget()->setCursor(m_cPrevCursor); - _pcView3D = 0; + _pcView3D->getWidget()->setCursor(m_cPrevCursor); + _pcView3D = 0; + } } void AbstractMouseSelection::redraw() diff --git a/src/Gui/NavigationStyle.cpp b/src/Gui/NavigationStyle.cpp index 4e802362f..48fb8c01e 100644 --- a/src/Gui/NavigationStyle.cpp +++ b/src/Gui/NavigationStyle.cpp @@ -1088,8 +1088,11 @@ void NavigationStyle::startSelection(NavigationStyle::SelectionMode mode) void NavigationStyle::stopSelection() { pcPolygon.clear(); - delete mouseSelection; - mouseSelection = 0; + if (mouseSelection) { + mouseSelection->releaseMouseModel(); + delete mouseSelection; + mouseSelection = 0; + } } SbBool NavigationStyle::isSelecting() const