diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 8774caf1ff47..dbe156b139a9 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -1295,36 +1295,41 @@ void TreeWidget::mouseDoubleClickEvent (QMouseEvent * event) { QTreeWidgetItem* item = itemAt(event->pos()); if (!item) return; - if (item->type() == TreeWidget::DocumentType) { - //QTreeWidget::mouseDoubleClickEvent(event); - Gui::Document* doc = static_cast(item)->document(); - if (!doc) return; - if(doc->getDocument()->testStatus(App::Document::PartialDoc)) { - contextItem = item; - onReloadDoc(); - return; + + try { + if (item->type() == TreeWidget::DocumentType) { + //QTreeWidget::mouseDoubleClickEvent(event); + Gui::Document* doc = static_cast(item)->document(); + if (!doc) return; + if(doc->getDocument()->testStatus(App::Document::PartialDoc)) { + contextItem = item; + onReloadDoc(); + return; + } + if(!doc->setActiveView()) + doc->setActiveView(0,View3DInventor::getClassTypeId()); } - if(!doc->setActiveView()) - doc->setActiveView(0,View3DInventor::getClassTypeId()); - } - else if (item->type() == TreeWidget::ObjectType) { - DocumentObjectItem* objitem = static_cast(item); - objitem->getOwnerDocument()->document()->setActiveView(objitem->object()); - auto manager = Application::Instance->macroManager(); - auto lines = manager->getLines(); - auto editDoc = Application::Instance->editDocument(); - App::AutoTransaction committer("Double click", true); - std::ostringstream ss; - ss << Command::getObjectCmd(objitem->object()->getObject()) - << ".ViewObject.doubleClicked()"; - if (!objitem->object()->doubleClicked()) - QTreeWidget::mouseDoubleClickEvent(event); - else if(lines == manager->getLines()) - manager->addLine(MacroManager::Gui,ss.str().c_str()); - - // If the double click starts an editing, let the transaction persist - if(!editDoc && Application::Instance->editDocument()) - committer.setEnable(false); + else if (item->type() == TreeWidget::ObjectType) { + DocumentObjectItem* objitem = static_cast(item); + objitem->getOwnerDocument()->document()->setActiveView(objitem->object()); + auto manager = Application::Instance->macroManager(); + auto lines = manager->getLines(); + auto editDoc = Application::Instance->editDocument(); + App::AutoTransaction committer("Double click", true); + std::ostringstream ss; + ss << Command::getObjectCmd(objitem->object()->getObject()) + << ".ViewObject.doubleClicked()"; + if (!objitem->object()->doubleClicked()) + QTreeWidget::mouseDoubleClickEvent(event); + else if(lines == manager->getLines()) + manager->addLine(MacroManager::Gui,ss.str().c_str()); + + // If the double click starts an editing, let the transaction persist + if(!editDoc && Application::Instance->editDocument()) + committer.setEnable(false); + } + } catch (Base::Exception &e) { + e.ReportException(); } }