diff --git a/src/Mod/TechDraw/App/DrawViewArch.cpp b/src/Mod/TechDraw/App/DrawViewArch.cpp index 21145712fc..fa602dcfb4 100644 --- a/src/Mod/TechDraw/App/DrawViewArch.cpp +++ b/src/Mod/TechDraw/App/DrawViewArch.cpp @@ -70,27 +70,25 @@ DrawViewArch::~DrawViewArch() { } -void DrawViewArch::onChanged(const App::Property* prop) +short DrawViewArch::mustExecute() const { + short result = 0; if (!isRestoring()) { - if (prop == &Source || - prop == &AllOn || - prop == &RenderMode || - prop == &ShowHidden || - prop == &ShowFill || - prop == &LineWidth || - prop == &FontSize) { - try { - App::DocumentObjectExecReturn *ret = recompute(); - delete ret; - } - catch (...) { - } - } + result = (Source.isTouched() || + AllOn.isTouched() || + RenderMode.isTouched() || + ShowHidden.isTouched() || + ShowFill.isTouched() || + LineWidth.isTouched() || + FontSize.isTouched()); } - TechDraw::DrawViewSymbol::onChanged(prop); + if ((bool) result) { + return result; + } + return DrawViewSymbol::mustExecute(); } + App::DocumentObjectExecReturn *DrawViewArch::execute(void) { if (!keepUpdated()) { @@ -123,7 +121,7 @@ App::DocumentObjectExecReturn *DrawViewArch::execute(void) Base::Interpreter().runStringArg("App.activeDocument().%s.Symbol = '%s' + svgBody + '%s'", FeatName.c_str(),svgHead.c_str(),svgTail.c_str()); } - requestPaint(); +// requestPaint(); return DrawView::execute(); } diff --git a/src/Mod/TechDraw/App/DrawViewArch.h b/src/Mod/TechDraw/App/DrawViewArch.h index c083408146..b02b9cf0a3 100644 --- a/src/Mod/TechDraw/App/DrawViewArch.h +++ b/src/Mod/TechDraw/App/DrawViewArch.h @@ -60,11 +60,14 @@ public: virtual const char* getViewProviderName(void) const override { return "TechDrawGui::ViewProviderArch"; } + + virtual short mustExecute() const override; + void Restore(Base::XMLReader &reader) override; protected: - virtual void onChanged(const App::Property* prop) override; +/* virtual void onChanged(const App::Property* prop) override;*/ Base::BoundBox3d bbox; std::string getSVGHead(void); std::string getSVGTail(void); diff --git a/src/Mod/TechDraw/App/DrawViewDraft.cpp b/src/Mod/TechDraw/App/DrawViewDraft.cpp index 5b1a8852d3..b992b21f9a 100644 --- a/src/Mod/TechDraw/App/DrawViewDraft.cpp +++ b/src/Mod/TechDraw/App/DrawViewDraft.cpp @@ -66,29 +66,29 @@ DrawViewDraft::~DrawViewDraft() { } -void DrawViewDraft::onChanged(const App::Property* prop) +short DrawViewDraft::mustExecute() const { + short result = 0; if (!isRestoring()) { - if (prop == &Source || - prop == &LineWidth || - prop == &FontSize || - prop == &Direction || - prop == &Color || - prop == &LineStyle || - prop == &LineSpacing) { - try { - App::DocumentObjectExecReturn *ret = recompute(); - delete ret; - } - catch (...) { - } - } + result = Source.isTouched() || + LineWidth.isTouched() || + FontSize.isTouched() || + Direction.isTouched() || + Color.isTouched() || + LineStyle.isTouched() || + LineSpacing.isTouched(); } - TechDraw::DrawViewSymbol::onChanged(prop); + if ((bool) result) { + return result; + } + return DrawViewSymbol::mustExecute(); } + + App::DocumentObjectExecReturn *DrawViewDraft::execute(void) { +// Base::Console().Message("DVDr::execute() \n"); if (!keepUpdated()) { return App::DocumentObject::StdReturn; } @@ -125,7 +125,7 @@ App::DocumentObjectExecReturn *DrawViewDraft::execute(void) Base::Interpreter().runStringArg("App.activeDocument().%s.Symbol = '%s' + svgBody + '%s'", FeatName.c_str(),svgHead.c_str(),svgTail.c_str()); } - requestPaint(); +// requestPaint(); return DrawView::execute(); } diff --git a/src/Mod/TechDraw/App/DrawViewDraft.h b/src/Mod/TechDraw/App/DrawViewDraft.h index c5a56bc555..6a230a4012 100644 --- a/src/Mod/TechDraw/App/DrawViewDraft.h +++ b/src/Mod/TechDraw/App/DrawViewDraft.h @@ -61,11 +61,14 @@ public: virtual const char* getViewProviderName(void) const override { return "TechDrawGui::ViewProviderDraft"; } + + virtual short mustExecute() const override; + void Restore(Base::XMLReader &reader) override; protected: - virtual void onChanged(const App::Property* prop) override; +/* virtual void onChanged(const App::Property* prop) override;*/ Base::BoundBox3d bbox; std::string getSVGHead(void); std::string getSVGTail(void); diff --git a/src/Mod/TechDraw/App/DrawViewSymbol.cpp b/src/Mod/TechDraw/App/DrawViewSymbol.cpp index b28d15b620..1c89d07eee 100644 --- a/src/Mod/TechDraw/App/DrawViewSymbol.cpp +++ b/src/Mod/TechDraw/App/DrawViewSymbol.cpp @@ -66,6 +66,7 @@ DrawViewSymbol::~DrawViewSymbol() void DrawViewSymbol::onChanged(const App::Property* prop) { +// Base::Console().Message("DVS::onChanged(%s) \n",prop->getName()); if (prop == &Symbol) { if (!isRestoring()) { //this pulls the initial values from svg into editabletexts @@ -83,7 +84,7 @@ void DrawViewSymbol::onChanged(const App::Property* prop) tbegin = twhat[0].second; } EditableTexts.setValues(eds); - requestPaint(); +// requestPaint(); } } } @@ -92,6 +93,7 @@ void DrawViewSymbol::onChanged(const App::Property* prop) App::DocumentObjectExecReturn *DrawViewSymbol::execute(void) { +// Base::Console().Message("DVS::execute() \n"); if (!keepUpdated()) { return App::DocumentObject::StdReturn; } @@ -120,7 +122,7 @@ App::DocumentObjectExecReturn *DrawViewSymbol::execute(void) } Symbol.setValue(newsvg); - requestPaint(); +// requestPaint(); return DrawView::execute(); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index 13385ba25f..c7b9079266 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -239,14 +239,18 @@ MDIViewPage* ViewProviderDrawingView::getMDIViewPage() const void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv) { +// Base::Console().Message("VPDV::onGuiRepaint(%s)\n",dv->getNameInDocument()); if (dv == getViewObject()) { - QGIView* qgiv = getQView(); - if (qgiv) { - qgiv->updateView(true); - } else { //we are not part of the Gui page yet. ask page to add us. - MDIViewPage* page = getMDIViewPage(); - if (page != nullptr) { - page->addView(dv); + if (!dv->isRemoving() && + !dv->isRestoring()) { + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } else { //we are not part of the Gui page yet. ask page to add us. + MDIViewPage* page = getMDIViewPage(); + if (page != nullptr) { + page->addView(dv); + } } } }