diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-06-09 13:07:31 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-06-09 10:28:41 +0000 |
commit | 05ae940ebad4f0fa7c9a98ad98a95159e777f51e (patch) | |
tree | e78798f79df04b45abd816dbb4c817e028a6c9fa /editorlib | |
parent | eaba4f713fa14b0981d3cf76eab6bf55295840c1 (diff) |
Optimize isDescendant function
Change-Id: I6f07088c54420b06d7aa5bfa0bd43d62bf84da2e
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'editorlib')
-rw-r--r-- | editorlib/src/editorutils.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/editorlib/src/editorutils.cpp b/editorlib/src/editorutils.cpp index eebdb51..37c1cab 100644 --- a/editorlib/src/editorutils.cpp +++ b/editorlib/src/editorutils.cpp @@ -1223,16 +1223,14 @@ QVector3D EditorUtils::cameraNormal(Qt3DRender::QCamera *camera) bool EditorUtils::isDescendant(EditorSceneItem *ancestor, EditorSceneItem *descendantItem) { - bool descendant = ancestor == descendantItem; - if (!descendant) { - Q_FOREACH (EditorSceneItem *item, ancestor->childItems()) { - if (isDescendant(item, descendantItem)) { - descendant = true; - break; - } - } + EditorSceneItem *parent = descendantItem->parentItem(); + + while (parent) { + if (parent == ancestor) + return true; + parent = parent->parentItem(); } - return descendant; + return false; } EditorUtils::InsertableEntities EditorUtils::insertableEntityType(Qt3DCore::QEntity *entity) |