diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 39971d28c3..aaf17cd7c2 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -339,14 +339,9 @@ bool MDIViewPage::attachView(App::DocumentObject *obj) void MDIViewPage::onDeleteObject(const App::DocumentObject& obj) { + //if this page has a QView for this obj, delete it. if (obj.isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - const App::DocumentObject* objPtr = &obj; - const TechDraw::DrawView* dv = static_cast(objPtr); - TechDraw::DrawPage* dvPg = dv->findParentPage(); - if (dvPg == m_vpPage->getDrawPage()) { - //this is a DV that is on our page - (void) m_view->removeQViewByDrawView(dv); - } + (void) m_view->removeQViewByName(obj.getNameInDocument()); } } diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index d475dfee20..900b78802f 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -217,14 +217,14 @@ int QGVPage::removeQView(QGIView *view) return 0; } -int QGVPage::removeQViewByDrawView(const TechDraw::DrawView* dv) +int QGVPage::removeQViewByName(const char* name) { std::vector items = getViews(); - QString qsName = QString::fromUtf8(dv->getNameInDocument()); + QString qsName = QString::fromUtf8(name); bool found = false; QGIView* ourItem = nullptr; for (auto& i:items) { - if (qsName == i->data(1).toString()) { //is there really a QGIV for this DV in scene? + if (qsName == i->data(1).toString()) { //is there a QGIV with this name in scene? found = true; ourItem = i; break; diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index a0d1c7bdb7..3432997151 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -84,7 +84,7 @@ public: int addQView(QGIView * view); int removeQView(QGIView *view); - int removeQViewByDrawView(const TechDraw::DrawView* dv); + int removeQViewByName(const char* name); void removeQViewFromScene(QGIView *view); //void setViews(const std::vector &view) {views = view; }