diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index f72bdbf35e9..12e3c33beea 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -777,10 +777,13 @@ void TreeItem::setModel(TreeModel *model) void TreeItem::walkTree(TreeItemVisitor *visitor) { if (visitor->preVisit(this)) { + ++visitor->m_level; visitor->visit(this); foreach (TreeItem *item, m_children) item->walkTree(visitor); + --visitor->m_level; } + visitor->postVisit(this); } void TreeItem::walkTree(std::function f) diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h index 175e5bb0c98..a4dfba5fd2d 100644 --- a/src/libs/utils/treemodel.h +++ b/src/libs/utils/treemodel.h @@ -49,11 +49,18 @@ class TreeModel; class QTCREATOR_UTILS_EXPORT TreeItemVisitor { public: - TreeItemVisitor() {} + TreeItemVisitor() : m_level(0) {} virtual ~TreeItemVisitor() {} - bool preVisit(TreeItem *) { return true; } - void visit(TreeItem *) {} + virtual bool preVisit(TreeItem *) { return true; } + virtual void visit(TreeItem *) {} + virtual void postVisit(TreeItem *) {} + + int level() const { return m_level; } + +private: + friend class TreeItem; + int m_level; }; class QTCREATOR_UTILS_EXPORT TreeItem