Skip to content

Commit

Permalink
[TD]fix updating of shared view
Browse files Browse the repository at this point in the history
  • Loading branch information
WandererFan committed Jun 5, 2022
1 parent 332cb9e commit 681d961
Showing 1 changed file with 30 additions and 8 deletions.
38 changes: 30 additions & 8 deletions src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp
Expand Up @@ -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)
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 681d961

Please sign in to comment.