diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index 6eb5a75c08..f2af7abe79 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -204,17 +204,30 @@ void QGISVGTemplate::updateView(bool update) draw(); } +std::vector QGISVGTemplate::getTextFields() +{ + constexpr int TemplateTextFieldType {QGraphicsItem::UserType + 160}; + std::vector result; + result.reserve(childItems().size()); + + QList templateChildren = childItems(); + for (auto& child : templateChildren) { + if (child->type() == TemplateTextFieldType) { + result.push_back(dynamic_cast(child)); + } + } + + return result; +} + void QGISVGTemplate::clearClickHandles() { prepareGeometryChange(); - constexpr int TemplateTextFieldType{QGraphicsItem::UserType + 160}; - auto templateChildren = childItems(); - for (auto& child : templateChildren) { - if (child->type() == TemplateTextFieldType) { - child->hide(); - scene()->removeItem(child); - delete child; - } + std::vector textFields = getTextFields(); + for (auto& textField : textFields) { + textField->hide(); + scene()->removeItem(textField); + delete textField; } } @@ -317,7 +330,6 @@ void QGISVGTemplate::createClickHandles() item->setZValue(ZVALUE::SVGTEMPLATE + 1); addToGroup(item); - textFields.push_back(item); } } diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.h b/src/Mod/TechDraw/Gui/QGISVGTemplate.h index 583e379b4d..bec5622517 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.h +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.h @@ -60,6 +60,7 @@ public: void updateView(bool update = false) override; TechDraw::DrawSVGTemplate* getSVGTemplate(); + std::vector getTextFields() override; protected: void openFile(const QFile& file); diff --git a/src/Mod/TechDraw/Gui/QGITemplate.h b/src/Mod/TechDraw/Gui/QGITemplate.h index 52202b4574..763b753094 100644 --- a/src/Mod/TechDraw/Gui/QGITemplate.h +++ b/src/Mod/TechDraw/Gui/QGITemplate.h @@ -60,7 +60,7 @@ public: inline qreal getY() { return y() * -1; } virtual void updateView(bool update = false); - std::vector getTextFields() { return textFields; }; + virtual std::vector getTextFields() { return textFields; }; virtual void draw() = 0;