Fix non-Delete of Graphic on DocObject delete

- While the source document obj was "removing", the
  graphic was being deleted and readded by the view
  provider.
This commit is contained in:
wandererfan
2019-04-18 12:17:33 -04:00
committed by WandererFan
parent d379a83221
commit 02da48cac8
6 changed files with 55 additions and 45 deletions

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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);
}
}
}
}