TD: fix possible crash in QGIWeldSymbol::customBoundingRect()

Forum thread: https://forum.freecad.org/viewtopic.php?t=80203
This commit is contained in:
wmayer
2023-10-22 20:38:40 +02:00
committed by Roy-043
parent 5a740cfe68
commit f8069ede36
2 changed files with 19 additions and 7 deletions
+18 -7
View File
@@ -58,6 +58,9 @@ QGIWeldSymbol::QGIWeldSymbol(QGILeaderLine* myParent) :
m_arrowFeat(nullptr),
m_otherFeat(nullptr),
m_qgLead(myParent),
m_tailText(nullptr),
m_fieldFlag(nullptr),
m_allAround(nullptr),
m_blockDraw(false)
{
setFiltersChildEvents(true); //qt5
@@ -503,16 +506,24 @@ QRectF QGIWeldSymbol::customBoundingRect() const
{
QRectF result;
QRectF childRect = mapFromItem(m_tailText, m_tailText->boundingRect()).boundingRect();
result = result.united(childRect);
childRect = mapFromItem(m_fieldFlag, m_fieldFlag->boundingRect()).boundingRect();
result = result.united(childRect);
childRect = mapFromItem(m_allAround, m_allAround->boundingRect()).boundingRect();
result = result.united(childRect);
if (m_tailText) {
QRectF childRect = mapFromItem(m_tailText, m_tailText->boundingRect()).boundingRect();
result = result.united(childRect);
}
if (m_fieldFlag) {
QRectF childRect = mapFromItem(m_fieldFlag, m_fieldFlag->boundingRect()).boundingRect();
result = result.united(childRect);
}
if (m_allAround) {
QRectF childRect = mapFromItem(m_allAround, m_allAround->boundingRect()).boundingRect();
result = result.united(childRect);
}
std::vector<QGITile*> qgTiles = getQGITiles();
for (auto& t: qgTiles) {
childRect = mapFromItem(t, t->boundingRect()).boundingRect();
QRectF childRect = mapFromItem(t, t->boundingRect()).boundingRect();
result = result.united(childRect);
}
return result;
+1
View File
@@ -41,6 +41,7 @@ class Document;
namespace TechDraw {
class DrawWeldSymbol;
class DrawLeaderLine;
class DrawTileWeld;
class DrawView;
}