From 6ebdc18f9861c70c352c0039be29b7729327e218 Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Fri, 9 Jan 2015 17:02:09 +0100
Subject: [PATCH] TreeModel: Simplify indexFromItem()

Change-Id: Ief7f120ef27eb43746826da7c771b5f9a3f7ce8f
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
---
 src/libs/utils/treemodel.cpp | 26 +++++++-------------------
 src/libs/utils/treemodel.h   |  3 ---
 2 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp
index 8244fc93591..7dc28d668b6 100644
--- a/src/libs/utils/treemodel.cpp
+++ b/src/libs/utils/treemodel.cpp
@@ -840,8 +840,13 @@ TreeItem *TreeModel::itemFromIndex(const QModelIndex &idx) const
 
 QModelIndex TreeModel::indexFromItem(const TreeItem *item) const
 {
-//    CHECK(checkItem(item));
-    return item ? indexFromItemHelper(item, m_root, QModelIndex()) : QModelIndex();
+    QTC_ASSERT(item, return QModelIndex());
+    if (item == m_root)
+        return QModelIndex();
+
+    TreeItem *mitem = const_cast<TreeItem *>(item);
+    int row = item->parent()->m_children.indexOf(mitem);
+    return createIndex(row, 0, mitem);
 }
 
 void TreeModel::appendItem(TreeItem *parent, TreeItem *item)
@@ -904,23 +909,6 @@ void TreeModel::removeAllSubItems(TreeItem *item)
     endRemoveRows();
 }
 
-QModelIndex TreeModel::indexFromItemHelper(const TreeItem *needle,
-    TreeItem *parentItem, const QModelIndex &parentIndex) const
-{
-    CHECK_INDEX(parentIndex);
-    if (needle == parentItem)
-        return parentIndex;
-    for (int i = parentItem->rowCount(); --i >= 0; ) {
-        TreeItem *childItem = parentItem->child(i);
-        QModelIndex childIndex = index(i, 0, parentIndex);
-        QModelIndex idx = indexFromItemHelper(needle, childItem, childIndex);
-        CHECK_INDEX(idx);
-        if (idx.isValid())
-            return idx;
-    }
-    return QModelIndex();
-}
-
 //
 // TreeLevelItems
 //
diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h
index da5b2d717a5..612a7885261 100644
--- a/src/libs/utils/treemodel.h
+++ b/src/libs/utils/treemodel.h
@@ -202,9 +202,6 @@ public:
     }
 
 private:
-    QModelIndex indexFromItemHelper(const TreeItem *needle,
-        TreeItem *parentItem, const QModelIndex &parentIndex) const;
-
     TreeItem *m_root; // Owned.
 };
 
-- 
GitLab