diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index 61a6a8974c1..6c182ba48e6 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -866,10 +866,10 @@ TreeItem *TreeItem::reverseFindAnyChild(const std::function & { auto end = m_children.rend(); for (auto it = m_children.rbegin(); it != end; ++it) { - if (pred(*it)) - return *it; if (TreeItem *found = (*it)->reverseFindAnyChild(pred)) return found; + if (pred(*it)) + return *it; } return nullptr; } diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h index 41300b7dbc4..1cef3645111 100644 --- a/src/libs/utils/treemodel.h +++ b/src/libs/utils/treemodel.h @@ -82,7 +82,8 @@ public: void forSelectedChildren(const std::function &pred) const; void forAllChildren(const std::function &pred) const; TreeItem *findAnyChild(const std::function &pred) const; - // like findAnyChild() but processes children from bottom to top + // like findAnyChild() but processes children in exact reverse order + // (bottom to top, most inner children first) TreeItem *reverseFindAnyChild(const std::function &pred) const; // Levels are 1-based: Child at Level 1 is an immediate child.