diff --git a/src/Mod/TechDraw/App/DrawPage.cpp b/src/Mod/TechDraw/App/DrawPage.cpp index 2874617f6c..383d598054 100644 --- a/src/Mod/TechDraw/App/DrawPage.cpp +++ b/src/Mod/TechDraw/App/DrawPage.cpp @@ -267,6 +267,8 @@ int DrawPage::addView(App::DocumentObject *docObj) view->ScaleType.setValue("Automatic"); } + view->checkScale(); + return Views.getSize(); } diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 89c18ebd1e..b92ddc7fbf 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -94,14 +94,22 @@ DrawView::~DrawView() App::DocumentObjectExecReturn *DrawView::execute(void) { -// TechDraw::DrawPage *page = findParentPage(); -// if(page && -// keepUpdated()) { -// //nothing for DrawView to do -// } return App::DocumentObject::StdReturn; //DO::execute returns 0 } +void DrawView::checkScale(void) +{ + TechDraw::DrawPage *page = findParentPage(); + if(page && + keepUpdated()) { + if (ScaleType.isValue("Page")) { + if(std::abs(page->Scale.getValue() - getScale()) > FLT_EPSILON) { + Scale.setValue(page->Scale.getValue()); + } + } + } +} + void DrawView::onChanged(const App::Property* prop) { if (!isRestoring()) { @@ -136,9 +144,6 @@ void DrawView::onChanged(const App::Property* prop) } else if (prop == &X || //nothing needs to be calculated, just the graphic needs to be shifted. prop == &Y) { requestPaint(); -// if (isMouseMove()) { //actually "has mouse moved this item?" -// setAutoPos(false); -// } } } App::DocumentObject::onChanged(prop); diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 4cee87c8dd..4187cae85b 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -87,6 +87,7 @@ public: bool keepUpdated(void); boost::signal signalGuiPaint; virtual double getScale(void) const; + void checkScale(void); protected: void onChanged(const App::Property* prop);