[TD]fix updating of shared view

This commit is contained in:
Wanderer Fan
2022-06-04 13:42:26 -04:00
committed by WandererFan
parent 17b9e5a401
commit 928c86d42d

View File

@@ -82,12 +82,6 @@ void ViewProviderDrawingView::attach(App::DocumentObject *pcFeat)
} else {
Base::Console().Warning("VPDV::attach has no Feature!\n");
}
// TechDraw::DrawView* view = static_cast<TechDraw::DrawView*>(pcFeat);
// TechDraw::DrawPage* page = view->findParentPage();
// TechDraw::DrawPage* page = feature->findParentPage();
// Base::Console().Message("VPDV::attach(%X) - parent: %X\n",
// pcFeat, page);
// pcFeat->getNameInDocument(), page->getNameInDocument());
}
void ViewProviderDrawingView::setDisplayMode(const char* ModeName)
@@ -257,8 +251,36 @@ Gui::MDIView *ViewProviderDrawingView::getMDIView() const
void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv)
{
// Base::Console().Message("VPDV::onGuiRepaint(%s)\n", dv->getNameInDocument());
if (dv == getViewObject()) {
// Base::Console().Message("VPDV::onGuiRepaint(%s) - this: %x\n", dv->getNameInDocument(), this);
std::vector<TechDraw::DrawPage*> pages = getViewObject()->findAllParentPages();
if (pages.size() > 1) {
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument());
if (guiDoc == nullptr) {
return;
}
for (auto& p : pages) {
std::vector<App::DocumentObject*> views = p->Views.getValues();
for (auto& v: views) {
if (v == getViewObject()) {
//view v belongs to this page p
Gui::ViewProvider* vp = guiDoc->getViewProvider(p);
ViewProviderPage* vpPage = dynamic_cast<ViewProviderPage*>(vp);
if (vpPage != nullptr) {
if (vpPage->getMDIViewPage() != nullptr) {
if (vpPage->getMDIViewPage()->getQGVPage()) {
QGIView* qView = dynamic_cast<QGIView *>(vpPage->getMDIViewPage()->
getQGVPage()->findQViewForDocObj(v));
if (qView != nullptr) {
qView->updateView(true);
}
}
}
}
}
}
}
} else if (dv == getViewObject()) {
//original logic for 1 view on 1 page
if (!dv->isRemoving() &&
!dv->isRestoring()) {
QGIView* qgiv = getQView();