*fix displayed/total on views, so they are correct on updates

*listviews don't become dirty from add/delete/update signals while
 they are not active. This should improve performance on large trees
 now that these actions are cheap in all views after rework of the views


svn: r14020
This commit is contained in:
Benny Malengier
2010-01-10 15:00:15 +00:00
parent 2e65bfcce4
commit 04763f50fe
4 changed files with 62 additions and 13 deletions

View File

@@ -265,6 +265,9 @@ class TreeBaseModel(gtk.GenericTreeModel):
group_can_have_handle = False):
cput = time.clock()
gtk.GenericTreeModel.__init__(self)
#two unused attributes pesent to correspond to flatbasemodel
self.prev_handle = None
self.prev_data = None
self.__reverse = (order == gtk.SORT_DESCENDING)
self.scol = scol
@@ -571,6 +574,8 @@ class TreeBaseModel(gtk.GenericTreeModel):
path = self.on_get_path(child_node)
node = self.get_iter(path)
self.row_inserted(path, node)
self.__total += 1
self.__displayed += 1
if handle:
self.handle2node[handle] = child_node
@@ -587,19 +592,26 @@ class TreeBaseModel(gtk.GenericTreeModel):
str(parent) + ' ' + str(child) + ' ' + sortkey
if handle:
node.set_handle(handle)
if not self._in_build:
self.__total += 1
self.__displayed += 1
def remove_node(self, node):
"""
Remove a node from the map.
"""
if node.children:
node.set_handle(None)
self.__displayed -= 1
self.__total -= 1
else:
path = self.on_get_path(node)
self.nodemap.node(node.parent).remove_child(node, self.nodemap)
del self.tree[node.ref]
self.nodemap.del_node(node)
del node
self.__displayed -= 1
self.__total -= 1
# emit row_deleted signal
self.row_deleted(path)