void MDIViewPage::updateTemplate(bool forceUpdate) { App::DocumentObject *templObj = m_vpPage->getDrawPage()->Template.getValue(); // TODO: what if template has been deleted? templObj will be NULL. segfault? if (!templObj) { Base::Console().Log("INFO - MDIViewPage::updateTemplate - Page: %s has NO template!!\n",m_vpPage->getDrawPage()->getNameInDocument()); return; } if(m_vpPage->getDrawPage()->Template.isTouched() || templObj->isTouched()) { // Template is touched so update if(forceUpdate || (templObj && templObj->isTouched() && templObj->isDerivedFrom(TechDraw::DrawTemplate::getClassTypeId())) ) { QGITemplate *qItemTemplate = m_view->getTemplate(); if(qItemTemplate) { TechDraw::DrawTemplate *pageTemplate = dynamic_cast<TechDraw::DrawTemplate *>(templObj); qItemTemplate->setTemplate(pageTemplate); qItemTemplate->updateView(); } } } }
short DrawPage::mustExecute() const { if(Scale.isTouched()) return 1; // Check the value of template if this has been modified App::DocumentObject* tmpl = Template.getValue(); if(tmpl && tmpl->isTouched()) return 1; // Check if within this Page, any Views have been touched bool ViewsTouched = false; const std::vector<App::DocumentObject*> &vals = Views.getValues(); for(std::vector<App::DocumentObject *>::const_iterator it = vals.begin(); it < vals.end(); ++it) { if((*it)->isTouched()) { return 1; } } return (ViewsTouched) ? 1 : App::DocumentObject::mustExecute(); }