diff options
Diffstat (limited to 'engines/titanic/core/project_item.cpp')
-rw-r--r-- | engines/titanic/core/project_item.cpp | 17 |
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 { |