From af8df9f4be91aa21eb6ca493203ac4ca0b8d7234 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 23 Dec 2021 18:16:18 +0100 Subject: [PATCH] minor improvements --- src/controls/QskSkinlet.cpp | 4 +--- src/nodes/QskSGNode.cpp | 17 +++++++++++++++++ src/nodes/QskSGNode.h | 2 ++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/controls/QskSkinlet.cpp b/src/controls/QskSkinlet.cpp index 3cdc2648..2ac36f97 100644 --- a/src/controls/QskSkinlet.cpp +++ b/src/controls/QskSkinlet.cpp @@ -261,10 +261,8 @@ void QskSkinlet::updateNode( QskSkinnable* skinnable, QSGNode* parentNode ) cons replaceChildNode( DebugRole, parentNode, oldNode, newNode ); } - for ( int i = 0; i < m_data->nodeRoles.size(); i++ ) + for ( const auto nodeRole : m_data->nodeRoles ) { - const auto nodeRole = m_data->nodeRoles[ i ]; - Q_ASSERT( nodeRole < FirstReservedRole ); oldNode = QskSGNode::findChildNode( parentNode, nodeRole ); diff --git a/src/nodes/QskSGNode.cpp b/src/nodes/QskSGNode.cpp index b4afabae..6288c387 100644 --- a/src/nodes/QskSGNode.cpp +++ b/src/nodes/QskSGNode.cpp @@ -69,6 +69,23 @@ static void qskInsertChildSorted( QSGNode* parent, QSGNode* child, parent->prependChildNode( child ); } +void QskSGNode::setParentNode( QSGNode* node, QSGNode* parent ) +{ + if ( node ) + { + auto oldParent = node->parent(); + + if ( oldParent != parent ) + { + if ( oldParent ) + oldParent->removeChildNode( node ); + + if ( parent ) + parent->appendChildNode( node ); + } + } +} + QSGNode* QskSGNode::findChildNode( QSGNode* parent, quint8 role ) { auto node = parent->firstChild(); diff --git a/src/nodes/QskSGNode.h b/src/nodes/QskSGNode.h index 51e9804c..f4b7c22d 100644 --- a/src/nodes/QskSGNode.h +++ b/src/nodes/QskSGNode.h @@ -55,6 +55,8 @@ namespace QskSGNode // including child QSK_EXPORT void removeAllChildNodesFrom( QSGNode* parent, QSGNode* child ); + QSK_EXPORT void setParentNode( QSGNode* child, QSGNode* parent ); + template< typename Node > inline Node* createNode( quint8 role ) {