aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/core/project_item.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/core/project_item.cpp')
-rw-r--r--engines/titanic/core/project_item.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp
index 65e8645baa..af67f69580 100644
--- a/engines/titanic/core/project_item.cpp
+++ b/engines/titanic/core/project_item.cpp
@@ -372,15 +372,20 @@ CTreeItem *CProjectItem::findChildInstance(ClassDef *classDef) const {
}
CRoomItem *CProjectItem::findNextRoom(CRoomItem *priorRoom) const {
- return dynamic_cast<CRoomItem *>(findSiblingInstanceOf(CRoomItem::_type, priorRoom));
+ return dynamic_cast<CRoomItem *>(findSiblingChildInstanceOf(CRoomItem::_type, priorRoom));
}
-CTreeItem *CProjectItem::findSiblingInstanceOf(ClassDef *classDef, CTreeItem *startItem) const {
- CTreeItem *treeItem = startItem->getParent()->getNextSibling();
- if (treeItem == nullptr)
- return nullptr;
+CTreeItem *CProjectItem::findSiblingChildInstanceOf(ClassDef *classDef, CTreeItem *startItem) const {
+ for (CTreeItem *treeItem = startItem->getParent()->getNextSibling();
+ treeItem; treeItem = treeItem->getNextSibling()) {
+ for (CTreeItem *childItem = treeItem->getFirstChild();
+ childItem; childItem = childItem->getNextSibling()) {
+ if (childItem->isInstanceOf(classDef))
+ return childItem;
+ }
+ }
- return findChildInstance(classDef);
+ return nullptr;
}
CDontSaveFileItem *CProjectItem::getDontSaveFileItem() const {