Prevent Page Template Interference
- adding a 2nd+ Page with a different Template modified the existing Page's Template
This commit is contained in:
@@ -37,17 +37,20 @@
|
||||
#include <App/Application.h>
|
||||
#include <App/Document.h>
|
||||
#include <App/DocumentObject.h>
|
||||
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Document.h>
|
||||
#include <Gui/SoFCSelection.h>
|
||||
#include <Gui/Selection.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
#include <Gui/ViewProvider.h>
|
||||
|
||||
#include <Mod/TechDraw/App/DrawTemplate.h>
|
||||
#include <Mod/TechDraw/App/DrawSVGTemplate.h>
|
||||
#include <Mod/TechDraw/App/DrawPage.h>
|
||||
#include "QGITemplate.h"
|
||||
#include "QGVPage.h"
|
||||
#include "MDIViewPage.h"
|
||||
#include "ViewProviderTemplate.h"
|
||||
#include "ViewProviderPage.h"
|
||||
|
||||
using namespace TechDrawGui;
|
||||
|
||||
@@ -90,13 +93,10 @@ void ViewProviderTemplate::updateData(const App::Property* prop)
|
||||
if (getTemplate()->isDerivedFrom(TechDraw::DrawSVGTemplate::getClassTypeId())) {
|
||||
auto t = static_cast<TechDraw::DrawSVGTemplate*>(getTemplate());
|
||||
if (prop == &(t->Template)) {
|
||||
Gui::MDIView* gmdi = getActiveView();
|
||||
if (gmdi != nullptr) {
|
||||
MDIViewPage* mdi = dynamic_cast<MDIViewPage*>(gmdi);
|
||||
if (mdi != nullptr) {
|
||||
mdi->attachTemplate(t);
|
||||
mdi->viewAll();
|
||||
}
|
||||
MDIViewPage* mdi = getMDIViewPage();
|
||||
if (mdi != nullptr) {
|
||||
mdi->attachTemplate(t);
|
||||
mdi->viewAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,17 +152,27 @@ QGITemplate* ViewProviderTemplate::getQTemplate(void)
|
||||
QGITemplate *result = nullptr;
|
||||
TechDraw::DrawTemplate* dt = getTemplate();
|
||||
if (dt) {
|
||||
Gui::MDIView* gmdi = getActiveView();
|
||||
if (gmdi != nullptr) {
|
||||
MDIViewPage* mdi = dynamic_cast<MDIViewPage*>(gmdi);
|
||||
if (mdi != nullptr) {
|
||||
result = mdi->getQGVPage()->getTemplate();
|
||||
}
|
||||
MDIViewPage* mdi = getMDIViewPage();
|
||||
if (mdi != nullptr) {
|
||||
result = mdi->getQGVPage()->getTemplate();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
MDIViewPage* ViewProviderTemplate::getMDIViewPage(void)
|
||||
{
|
||||
MDIViewPage* myMdi = nullptr;
|
||||
auto t = getTemplate();
|
||||
auto page = t->getParentPage();
|
||||
Gui::ViewProvider* vp = Gui::Application::Instance->getDocument(t->getDocument())->getViewProvider(page);
|
||||
TechDrawGui::ViewProviderPage* dvp = dynamic_cast<TechDrawGui::ViewProviderPage*>(vp);
|
||||
if (dvp) {
|
||||
myMdi = dvp->getMDIViewPage();
|
||||
}
|
||||
return myMdi;
|
||||
}
|
||||
|
||||
TechDraw::DrawTemplate* ViewProviderTemplate::getTemplate() const
|
||||
{
|
||||
return dynamic_cast<TechDraw::DrawTemplate*>(pcObject);
|
||||
|
||||
Reference in New Issue
Block a user