summaryrefslogtreecommitdiffstats
path: root/editorlib
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2016-06-09 13:07:31 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2016-06-09 10:28:41 +0000
commit05ae940ebad4f0fa7c9a98ad98a95159e777f51e (patch)
treee78798f79df04b45abd816dbb4c817e028a6c9fa /editorlib
parenteaba4f713fa14b0981d3cf76eab6bf55295840c1 (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.cpp16
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)