From b0f0f94f7708282f916cc3f8cfb246c2352d5cf9 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 13 May 2021 21:25:30 +0200 Subject: [PATCH] expand/collapse event faster --- .../tools/project_manager/project_manager/view.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/openpype/tools/project_manager/project_manager/view.py b/openpype/tools/project_manager/project_manager/view.py index b7b984fccb..96e5be9a40 100644 --- a/openpype/tools/project_manager/project_manager/view.py +++ b/openpype/tools/project_manager/project_manager/view.py @@ -1,3 +1,4 @@ +import collections from queue import Queue from Qt import QtWidgets, QtCore, QtGui @@ -399,13 +400,14 @@ class HierarchyView(QtWidgets.QTreeView): Args: indexes (list): List of QModelIndex that should be expanded. """ - process_queue = Queue() for index in indexes: if index.column() == 0: process_queue.put(index) item_ids = set() + # Use deque as expanding not visible items as first is faster + indexes_deque = collections.deque() while not process_queue.empty(): index = process_queue.get() item_id = index.data(IDENTIFIER_ROLE) @@ -413,13 +415,16 @@ class HierarchyView(QtWidgets.QTreeView): continue item_ids.add(item_id) - self.expand(index) + indexes_deque.append(index) for row in range(self._source_model.rowCount(index)): process_queue.put(self._source_model.index( row, 0, index )) + while indexes_deque: + self.expand(indexes_deque.pop()) + def _collapse_items(self, indexes): """Collapse multiple items with all it's children. @@ -439,11 +444,9 @@ class HierarchyView(QtWidgets.QTreeView): continue item_ids.add(item_id) - item = self._source_model._items_by_id[item_id] - if self.isExpanded(index): - self.collapse(index) + self.collapse(index) - for row in range(item.rowCount()): + for row in range(self._source_model.rowCount(index)): process_queue.put(self._source_model.index( row, 0, index ))