Correct sceneRect when Template size changes
This commit is contained in:
@@ -178,12 +178,8 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget*
|
||||
App::DocumentObject *obj = m_vpPage->getDrawPage()->Template.getValue();
|
||||
auto pageTemplate( dynamic_cast<TechDraw::DrawTemplate *>(obj) );
|
||||
if( pageTemplate ) {
|
||||
//make sceneRect 1 pagesize bigger in every direction
|
||||
double width = Rez::guiX(pageTemplate->Width.getValue());
|
||||
double height = Rez::guiX(pageTemplate->Height.getValue());
|
||||
m_view->scene()->setSceneRect(QRectF(-width,-2.0 * height,3.0*width,3.0*height));
|
||||
attachTemplate(pageTemplate);
|
||||
viewAll();
|
||||
matchSceneRectToTemplate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,6 +189,18 @@ MDIViewPage::~MDIViewPage()
|
||||
connectDeletedObject.disconnect();
|
||||
}
|
||||
|
||||
void MDIViewPage::matchSceneRectToTemplate(void)
|
||||
{
|
||||
App::DocumentObject *obj = m_vpPage->getDrawPage()->Template.getValue();
|
||||
auto pageTemplate( dynamic_cast<TechDraw::DrawTemplate *>(obj) );
|
||||
if( pageTemplate ) {
|
||||
//make sceneRect 1 pagesize bigger in every direction
|
||||
double width = Rez::guiX(pageTemplate->Width.getValue());
|
||||
double height = Rez::guiX(pageTemplate->Height.getValue());
|
||||
m_view->scene()->setSceneRect(QRectF(-width,-2.0 * height,3.0*width,3.0*height));
|
||||
viewAll();
|
||||
}
|
||||
}
|
||||
|
||||
void MDIViewPage::setDimensionGroups(void)
|
||||
{
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
void attachTemplate(TechDraw::DrawTemplate *obj);
|
||||
void updateTemplate(bool force = false);
|
||||
void updateDrawing(bool force = false);
|
||||
void matchSceneRectToTemplate(void);
|
||||
|
||||
bool onMsg(const char* pMsg,const char** ppReturn);
|
||||
bool onHasMsg(const char* pMsg) const;
|
||||
|
||||
@@ -153,6 +153,7 @@ void ViewProviderPage::updateData(const App::Property* prop)
|
||||
} else if (prop == &(getDrawPage()->Template)) {
|
||||
if(m_mdiView &&
|
||||
!getDrawPage()->isUnsetting()) {
|
||||
m_mdiView->matchSceneRectToTemplate();
|
||||
m_mdiView->updateTemplate();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user