diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index b23adfd5fa..31e4b95f83 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -110,6 +110,20 @@ DrawView::DrawView(): } +App::DocumentObjectExecReturn* DrawView::recompute() +{ + try { + return App::DocumentObject::recompute(); + } + catch (Standard_Failure& e) { + auto ret = new App::DocumentObjectExecReturn(e.GetMessageString()); + if (ret->Why.empty()) { + ret->Why = "Unknown OCC exception"; + } + return ret; + } +} + App::DocumentObjectExecReturn *DrawView::execute() { // Base::Console().message("DV::execute() - %s touched: %d\n", getNameInDocument(), isTouched()); diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 092f0a14f4..ee8e3878ed 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -65,6 +65,7 @@ public: /** @name methods override Feature */ //@{ + App::DocumentObjectExecReturn* recompute() override; /// recalculate the Feature App::DocumentObjectExecReturn *execute() override; void onDocumentRestored() override; diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 85b91cebc2..f2be301429 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -1537,6 +1537,8 @@ void DrawViewPart::handleChangedPropertyType(Base::XMLReader &reader, const char } return; } + + DrawView::handleChangedPropertyType(reader, TypeName, prop); } // true if owner->element is a cosmetic vertex diff --git a/src/Mod/TechDraw/App/DrawViewSection.cpp b/src/Mod/TechDraw/App/DrawViewSection.cpp index e9155b7f0a..e2452e5f9e 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.cpp +++ b/src/Mod/TechDraw/App/DrawViewSection.cpp @@ -1254,6 +1254,8 @@ void DrawViewSection::handleChangedPropertyType(Base::XMLReader &reader, const c } return; } + + DrawViewPart::handleChangedPropertyType(reader, TypeName, prop); } // checks that SectionNormal and XDirection are perpendicular and that Direction is the same as diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 1351041e06..42a0d6f4d3 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -120,6 +120,7 @@ void positionDimText(DrawViewDimension* dim, int indexOffset = 0); void activateHandler(TechDrawHandler* newHandler) { + std::unique_ptr ptr(newHandler); auto* mdi = qobject_cast(Gui::getMainWindow()->activeWindow()); if (!mdi) { return; @@ -134,7 +135,7 @@ void activateHandler(TechDrawHandler* newHandler) if (!viewPage) { return; } - viewPage->activateHandler(newHandler); + viewPage->activateHandler(ptr.release()); } //=========================================================================== @@ -517,8 +518,12 @@ public: return; } + App::Document* pageDoc = nullptr; + if (auto page = getPage()) { + pageDoc = page->getDocument(); + } if (msg.Object.getObjectName().empty() - || msg.Object.getDocument() != getPage()->getDocument()) { + || (msg.Object.getDocument() != pageDoc)) { if (msg.Type == Gui::SelectionChanges::AddSelection) { Gui::Selection().rmvSelection(msg.pDocName, msg.pObjectName, msg.pSubName); } diff --git a/src/Mod/TechDraw/Gui/QGIFace.cpp b/src/Mod/TechDraw/Gui/QGIFace.cpp index fd50c588ce..35b93ab121 100644 --- a/src/Mod/TechDraw/Gui/QGIFace.cpp +++ b/src/Mod/TechDraw/Gui/QGIFace.cpp @@ -228,12 +228,6 @@ void QGIFace::setOutline(const QPainterPath & path) setPath(path); } -/// remove the PAT hatch lines -void QGIFace::clearLineSets() -{ - return; -} - /// add PAT hatch line set void QGIFace::addLineSet(LineSet& ls) { diff --git a/src/Mod/TechDraw/Gui/QGIFace.h b/src/Mod/TechDraw/Gui/QGIFace.h index b27233fc91..8fa6b5931c 100644 --- a/src/Mod/TechDraw/Gui/QGIFace.h +++ b/src/Mod/TechDraw/Gui/QGIFace.h @@ -108,7 +108,6 @@ public: //PAT fill parms & methods void setLineWeight(double weight); - [[deprecated]] void clearLineSets(); void addLineSet(TechDraw::LineSet& ls); void lineSetToFillItems(TechDraw::LineSet& ls); diff --git a/src/Mod/TechDraw/Gui/TechDrawHandler.cpp b/src/Mod/TechDraw/Gui/TechDrawHandler.cpp index bd182c4497..9e06322220 100644 --- a/src/Mod/TechDraw/Gui/TechDrawHandler.cpp +++ b/src/Mod/TechDraw/Gui/TechDrawHandler.cpp @@ -109,7 +109,9 @@ void TechDrawHandler::mouseReleaseEvent(QMouseEvent* event) void TechDrawHandler::quit() { - viewPage->deactivateHandler(); + if (viewPage) { + viewPage->deactivateHandler(); + } } QWidget* TechDrawHandler::getCursorWidget() @@ -127,5 +129,5 @@ void TechDrawHandler::setWidgetCursor(QCursor cursor) TechDraw::DrawPage* TechDrawHandler::getPage() { - return viewPage->getDrawPage(); -} \ No newline at end of file + return viewPage ? viewPage->getDrawPage() : nullptr; +} diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h index 7ceeec9cbf..32da198788 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h @@ -67,19 +67,19 @@ public: App::PropertyPercent FaceTransparency; void attach(App::DocumentObject *) override; - bool useNewSelectionModel(void) const override {return false;} + bool useNewSelectionModel() const override {return false;} bool onDelete(const std::vector &) override; bool canDelete(App::DocumentObject* obj) const override; bool setEdit(int ModNum) override; bool setDetailEdit(int ModNum, TechDraw::DrawViewDetail* dvd); - bool doubleClicked(void) override; + bool doubleClicked() override; void onChanged(const App::Property *prop) override; void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop) override; - Base::Color prefSectionColor(void); - Base::Color prefHighlightColor(void); - int prefHighlightStyle(void); + Base::Color prefSectionColor(); + Base::Color prefHighlightColor(); + int prefHighlightStyle(); - std::vector claimChildren(void) const override; + std::vector claimChildren() const override; void fixSceneDependencies() override; TechDraw::DrawViewPart* getViewObject() const override;