diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.ui b/src/Mod/TechDraw/Gui/DlgTemplateField.ui
index 70ffb4b2df..6ca427c0a0 100644
--- a/src/Mod/TechDraw/Gui/DlgTemplateField.ui
+++ b/src/Mod/TechDraw/Gui/DlgTemplateField.ui
@@ -74,7 +74,7 @@
QDialogButtonBox::Cancel|QDialogButtonBox::Ok
- true
+ false
diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp
index a949f8733f..46f6465a84 100644
--- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp
+++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp
@@ -94,7 +94,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget*
pageGui(pageVp),
m_frameState(true)
{
- m_view = new QGVPage(pageVp,m_scene);
+ m_view = new QGVPage(pageVp,m_scene,this);
m_backgroundAction = new QAction(tr("&Background"), this);
m_backgroundAction->setEnabled(false);
diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp
index 44a27c912d..9c87121b5c 100644
--- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp
+++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp
@@ -46,24 +46,21 @@
using namespace TechDrawGui;
-QGISVGTemplate::QGISVGTemplate(QGraphicsScene *scene)
- : QGITemplate(scene)
+QGISVGTemplate::QGISVGTemplate(QGraphicsScene *scene, QWidget* srWidget)
+ : QGITemplate(scene),
+ upperLevelWidget(srWidget)
{
- m_svgRender = new QSvgRenderer();
+ m_svgItem.setSharedRenderer(&m_svgRender);
- m_svgItem = new QGraphicsSvgItem();
- m_svgItem->setSharedRenderer(m_svgRender);
+ m_svgItem.setFlags(QGraphicsItem::ItemClipsToShape);
+ m_svgItem.setCacheMode(QGraphicsItem::NoCache);
- m_svgItem->setFlags(QGraphicsItem::ItemClipsToShape);
- m_svgItem->setCacheMode(QGraphicsItem::NoCache);
-
- addToGroup(m_svgItem);
+ addToGroup(&m_svgItem);
}
QGISVGTemplate::~QGISVGTemplate()
{
clearContents();
- delete m_svgRender;
}
QVariant QGISVGTemplate::itemChange(GraphicsItemChange change,
@@ -99,11 +96,11 @@ void QGISVGTemplate::load(const QString &fileName)
if (!file.exists()) {
return;
}
- m_svgRender->load(file.fileName());
+ m_svgRender.load(file.fileName());
- QSize size = m_svgRender->defaultSize();
+ QSize size = m_svgRender.defaultSize();
//Base::Console().Log("size of svg document <%i,%i>", size.width(), size.height());
- m_svgItem->setSharedRenderer(m_svgRender);
+ m_svgItem.setSharedRenderer(&m_svgRender);
TechDraw::DrawSVGTemplate *tmplte = getSVGTemplate();
@@ -170,7 +167,7 @@ void QGISVGTemplate::load(const QString &fileName)
double width = editClickBoxSize;
double height = editClickBoxSize;
- TemplateTextField *item = new TemplateTextField(this, tmplte, nameMatch[1].str());
+ TemplateTextField *item = new TemplateTextField(this, tmplte, nameMatch[1].str(), upperLevelWidget);
float pad = 1;
item->setRect(x - pad, -tmplte->getHeight() + y - height - pad,
width + 2 * pad, height + 2 * pad);
@@ -198,7 +195,7 @@ void QGISVGTemplate::load(const QString &fileName)
QTransform qtrans;
qtrans.translate(0.f, -tmplte->getHeight());
qtrans.scale(xaspect , yaspect);
- m_svgItem->setTransform(qtrans);
+ m_svgItem.setTransform(qtrans);
}
TechDraw::DrawSVGTemplate * QGISVGTemplate::getSVGTemplate()
@@ -223,4 +220,4 @@ void QGISVGTemplate::updateView(bool update)
draw();
}
-#include "moc_QGISVGTemplate.cpp"
\ No newline at end of file
+#include "moc_QGISVGTemplate.cpp"
diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.h b/src/Mod/TechDraw/Gui/QGISVGTemplate.h
index 648965f50b..85f5cd34e3 100644
--- a/src/Mod/TechDraw/Gui/QGISVGTemplate.h
+++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.h
@@ -24,12 +24,12 @@
#define DRAWINGGUI_QGRAPHICSITEMSVGTEMPLATE_H
#include "QGITemplate.h"
+#include
+#include
QT_BEGIN_NAMESPACE
class QGraphicsScene;
class QGraphicsSceneMouseEvent;
-class QGraphicsSvgItem;
-class QSvgRenderer;
QT_END_NAMESPACE
namespace TechDraw {
@@ -44,7 +44,7 @@ class TechDrawGuiExport QGISVGTemplate : public QGITemplate
Q_OBJECT
public:
- QGISVGTemplate(QGraphicsScene *);
+ QGISVGTemplate(QGraphicsScene *, QWidget* srWidget=0);
~QGISVGTemplate();
enum {Type = QGraphicsItem::UserType + 153};
@@ -61,11 +61,12 @@ Q_SIGNALS:
protected:
void openFile(const QFile &file);
void load (const QString & fileName);
+ QWidget* upperLevelWidget; //for parenting dlgTemplateField
protected:
TechDraw::DrawSVGTemplate * getSVGTemplate();
- QGraphicsSvgItem *m_svgItem;
- QSvgRenderer *m_svgRender;
+ QGraphicsSvgItem m_svgItem;
+ QSvgRenderer m_svgRender;
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
}; // class QGISVGTemplate
diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp
index 0ee1792cbc..150e9d29a2 100644
--- a/src/Mod/TechDraw/Gui/QGVPage.cpp
+++ b/src/Mod/TechDraw/Gui/QGVPage.cpp
@@ -420,7 +420,7 @@ void QGVPage::setPageTemplate(TechDraw::DrawTemplate *obj)
pageTemplate = qTempItem;
} else if(obj->isDerivedFrom(TechDraw::DrawSVGTemplate::getClassTypeId())) {
//TechDraw::DrawSVGTemplate *dwgTemplate = static_cast(obj);
- QGISVGTemplate *qTempItem = new QGISVGTemplate(scene());
+ QGISVGTemplate *qTempItem = new QGISVGTemplate(scene(),this);
pageTemplate = qTempItem;
}
pageTemplate->setTemplate(obj);
diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.cpp b/src/Mod/TechDraw/Gui/TemplateTextField.cpp
index 52fa374bb8..6b1056ac29 100644
--- a/src/Mod/TechDraw/Gui/TemplateTextField.cpp
+++ b/src/Mod/TechDraw/Gui/TemplateTextField.cpp
@@ -40,8 +40,12 @@ using namespace TechDrawGui;
TemplateTextField::TemplateTextField(QGraphicsItem*parent,
TechDraw::DrawTemplate *myTmplte,
- const std::string &myFieldName)
- : QGraphicsRectItem(parent), tmplte(myTmplte), fieldNameStr(myFieldName)
+ const std::string &myFieldName,
+ QWidget* upperWidget)
+ : QGraphicsRectItem(parent),
+ tmplte(myTmplte),
+ fieldNameStr(myFieldName),
+ dlgOwner(upperWidget)
{
}
@@ -52,7 +56,7 @@ TemplateTextField::~TemplateTextField()
void TemplateTextField::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
- DlgTemplateField* ui = new DlgTemplateField(nullptr);
+ DlgTemplateField* ui = new DlgTemplateField(dlgOwner);
ui->setFieldName(fieldNameStr);
ui->setFieldContent(tmplte->EditableTexts[fieldNameStr]);
int uiCode = ui->exec();
diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.h b/src/Mod/TechDraw/Gui/TemplateTextField.h
index 8a18fdc296..99e1d25a65 100644
--- a/src/Mod/TechDraw/Gui/TemplateTextField.h
+++ b/src/Mod/TechDraw/Gui/TemplateTextField.h
@@ -47,7 +47,8 @@ namespace TechDrawGui
public:
TemplateTextField(QGraphicsItem*parent,
TechDraw::DrawTemplate *myTmplte,
- const std::string &myFieldName);
+ const std::string &myFieldName,
+ QWidget* upperWidget=0);
~TemplateTextField();
@@ -61,6 +62,7 @@ namespace TechDrawGui
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
TechDraw::DrawTemplate *tmplte;
std::string fieldNameStr;
+ QWidget* dlgOwner;
};
} // namespace TechDrawGui