From e6069d8b032ba9fdb34f042ce4794f4eb3224a2e Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Wed, 6 Jul 2016 11:14:03 +0200
Subject: [PATCH] TreeModel: Introduce a recursive TreeItem::updateAll()
 function

Useful in cases where e.g. siblings are affected (e.g. font
changes to indicate active items).

Change-Id: Ib2f8018688d00bd682bb6aaff08156f0be04f5dc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
---
 src/libs/utils/treemodel.cpp | 10 ++++++++++
 src/libs/utils/treemodel.h   |  1 +
 2 files changed, 11 insertions(+)

diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp
index bb629c94db7..33639fa9c3f 100644
--- a/src/libs/utils/treemodel.cpp
+++ b/src/libs/utils/treemodel.cpp
@@ -730,6 +730,16 @@ void TreeItem::update()
     }
 }
 
+void TreeItem::updateAll()
+{
+    if (m_model) {
+        QModelIndex idx = index();
+        m_model->dataChanged(idx, idx.sibling(idx.row(), m_model->m_columnCount - 1));
+        foreach (TreeItem *item, m_children)
+            item->updateAll();
+    }
+}
+
 void TreeItem::updateColumn(int column)
 {
     if (m_model) {
diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h
index d0ec2617a40..3ddc070d41b 100644
--- a/src/libs/utils/treemodel.h
+++ b/src/libs/utils/treemodel.h
@@ -57,6 +57,7 @@ public:
     void removeChildren();
     void sortChildren(const std::function<bool(const TreeItem *, const TreeItem *)> &cmp);
     void update();
+    void updateAll();
     void updateColumn(int column);
     void expand();
     TreeItem *firstChild() const;
-- 
GitLab