diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-08-22 05:54:04 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-08-25 15:49:46 (GMT) |
commit | 17faaf100c9eae13be218c64071996680a028bcc (patch) | |
tree | 235701b18068da86f3a4aa4abd9961d100312b01 /src | |
parent | 2c6d28664af727cd2688e42cc0b128c973a83a52 (diff) |
Do large row-* events
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/journal/browse/lazymodel.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/jarabe/journal/browse/lazymodel.py b/src/jarabe/journal/browse/lazymodel.py index 5f2428e..8e5c12e 100644 --- a/src/jarabe/journal/browse/lazymodel.py +++ b/src/jarabe/journal/browse/lazymodel.py @@ -153,11 +153,15 @@ class LazyModel(gtk.GenericTreeModel): count = self._source.get_count() - for i in range(self._last_count, count): - self.emit('row-inserted', (i,), self.get_iter((i,))) - - for i in reversed(range(count, self._last_count)): - self.emit('row-deleted', (i,)) + # TODO how to handle large update, + # commented for now since in TableView + # it works fine w/o these updates + #for i in range(self._last_count, count): + # self.emit('row-inserted', (i,), self.get_iter((i,))) + #for i in reversed(range(count, self._last_count)): + # self.emit('row-deleted', (i,)) + if self._last_count != count: + self.emit('rows-reordered', (0,), self.get_iter((0,)), None) if self._frame[0] >= count: self._frame = (0, -1) @@ -166,9 +170,12 @@ class LazyModel(gtk.GenericTreeModel): if self._cache.has_key(i): del self._cache[i] self._frame = (self._frame[0], count-1) + self._cache = {} - for i in range(self._frame[0], self._frame[1]+1): - self.emit('row-changed', (i,), self.get_iter((i,))) + + if self._last_count == count: + for i in range(self._frame[0], self._frame[1]+1): + self.emit('row-changed', (i,), self.get_iter((i,))) self._last_count = count @@ -176,7 +183,7 @@ class LazyModel(gtk.GenericTreeModel): for i, row in self._cache.items(): for field in fields: if row.has_key(field): - del row[i] + del row[field] self.emit('row-changed', (i,), self.get_iter((i,))) def get_row(self, pos, frame=None): @@ -387,7 +394,7 @@ class Row: def __contains__(self, key): if isinstance(key, int): - return key < len(self.row) + return key < len(self.row) or self._calced_row.has_key(key) else: return self.metadata.__contains__(key) |