diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 12adc95424ab..1159308ecb36 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -283,14 +283,20 @@ void DrawSketchHandler::activate(ViewProviderSketch* vp) sketchgui = vp; // save the cursor at the time the DSH is activated - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); - oldCursor = viewer->getWidget()->cursor(); + auto* view = dynamic_cast(Gui::getMainWindow()->activeWindow()); + + if (view) { + Gui::View3DInventorViewer* viewer = dynamic_cast(view)->getViewer(); + oldCursor = viewer->getWidget()->cursor(); - updateCursor(); + updateCursor(); - this->preActivated(); - this->activated(); + this->preActivated(); + this->activated(); + } + else { + sketchgui->purgeHandler(); + } } void DrawSketchHandler::deactivate() diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 120e1e5afaef..8fd0d9c5d76e 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -565,10 +565,13 @@ void ViewProviderSketch::purgeHandler() Gui::Selection().clearSelection(); // ensure that we are in sketch only selection mode - Gui::MDIView* mdi = Gui::Application::Instance->editDocument()->getActiveView(); - Gui::View3DInventorViewer* viewer; - viewer = static_cast(mdi)->getViewer(); - viewer->setSelectionEnabled(false); + auto* view = dynamic_cast(Gui::Application::Instance->editDocument()->getActiveView()); + + if(view) { + Gui::View3DInventorViewer* viewer; + viewer = static_cast(view)->getViewer(); + viewer->setSelectionEnabled(false); + } } void ViewProviderSketch::setAxisPickStyle(bool on)