From ca5062cbfe53f87724cf9532867936e4988c2cd1 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 31 Dec 2014 14:08:03 +0100 Subject: [PATCH] + fixes #0001885: Unhandled exception when trying to enter edit-mode for objects while drawing view is active --- src/Gui/Document.cpp | 11 ++++++++++- src/Mod/Part/Gui/ViewProvider.cpp | 14 ++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 8742ba172..55779b85e 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -205,6 +205,13 @@ bool Document::setEdit(Gui::ViewProvider* p, int ModNum) return false; View3DInventor *activeView = dynamic_cast(getActiveView()); + // if the currently active view is not te 3d view search for it and activate it + if (!activeView) { + activeView = dynamic_cast(getViewOfViewProvider(p)); + if (activeView) + getMainWindow()->setActiveWindow(activeView); + } + if (activeView && activeView->getViewer()->setEditingViewProvider(p,ModNum)) { d->_pcInEdit = p; Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog(); @@ -213,8 +220,10 @@ bool Document::setEdit(Gui::ViewProvider* p, int ModNum) if (d->_pcInEdit->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) signalInEdit(*(static_cast(d->_pcInEdit))); } - else + else { return false; + } + return true; } diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp index 57aeb38a8..b540442ab 100644 --- a/src/Mod/Part/Gui/ViewProvider.cpp +++ b/src/Mod/Part/Gui/ViewProvider.cpp @@ -114,10 +114,16 @@ bool ViewProviderPart::doubleClicked(void) { std::string Msg("Edit "); Msg += this->pcObject->Label.getValue(); - Gui::Command::openCommand(Msg.c_str()); - Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.setEdit('%s',0)", - this->pcObject->getNameInDocument()); - return true; + try { + Gui::Command::openCommand(Msg.c_str()); + Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.setEdit('%s',0)", + this->pcObject->getNameInDocument()); + return true; + } + catch (const Base::Exception& e) { + Base::Console().Error("%s\n", e.what()); + return false; + } } void ViewProviderPart::applyColor(const Part::ShapeHistory& hist,