diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index 24b3e2e16022..0662e610aaa4 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -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(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 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 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(vp); + if (vpPage != nullptr) { + if (vpPage->getMDIViewPage() != nullptr) { + if (vpPage->getMDIViewPage()->getQGVPage()) { + QGIView* qView = dynamic_cast(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();