diff options
Diffstat (limited to 'src/svg/qsvghandler.cpp')
-rw-r--r-- | src/svg/qsvghandler.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp index 38af443..b303ca7 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp @@ -3820,8 +3820,9 @@ bool QSvgHandler::startElement(const QString &localName, } else if (node->type() == QSvgNode::TSPAN) { static_cast<QSvgTspan *>(node)->setWhitespaceMode(m_whitespaceMode.top()); } else if (node->type() == QSvgNode::USE) { - if (!static_cast<QSvgUse *>(node)->isResolved()) - m_resolveNodes.append(node); + auto useNode = static_cast<QSvgUse *>(node); + if (!useNode->isResolved()) + m_toBeResolved.append(useNode); } } } @@ -3928,17 +3929,16 @@ void QSvgHandler::resolveGradients(QSvgNode *node, int nestedDepth) void QSvgHandler::resolveNodes() { - for (QSvgNode *node : qAsConst(m_resolveNodes)) { - if (!node || !node->parent() || node->type() != QSvgNode::USE) + for (QSvgUse *useNode : qAsConst(m_toBeResolved)) { + const auto parent = useNode->parent(); + if (!parent) continue; - QSvgUse *useNode = static_cast<QSvgUse *>(node); - if (useNode->isResolved()) - continue; - QSvgNode::Type t = useNode->parent()->type(); - if (!(t == QSvgNode::DOC || t == QSvgNode::DEFS || t == QSvgNode::G || t == QSvgNode::SWITCH)) + + QSvgNode::Type t = parent->type(); + if (t != QSvgNode::DOC && t != QSvgNode::DEFS && t != QSvgNode::G && t != QSvgNode::SWITCH) continue; - QSvgStructureNode *group = static_cast<QSvgStructureNode *>(useNode->parent()); + QSvgStructureNode *group = static_cast<QSvgStructureNode *>(parent); QSvgNode *link = group->scopeNode(useNode->linkId()); if (!link) { qCWarning(lcSvgHandler, "link #%s is undefined!", qPrintable(useNode->linkId())); @@ -3950,7 +3950,7 @@ void QSvgHandler::resolveNodes() useNode->setLink(link); } - m_resolveNodes.clear(); + m_toBeResolved.clear(); } bool QSvgHandler::characters(const QStringView str) |