diff options
Diffstat (limited to 'src/jarabe/journal/lazymodel.py')
-rw-r--r-- | src/jarabe/journal/lazymodel.py | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/jarabe/journal/lazymodel.py b/src/jarabe/journal/lazymodel.py index 221a5d2..2243774 100644 --- a/src/jarabe/journal/lazymodel.py +++ b/src/jarabe/journal/lazymodel.py @@ -118,11 +118,7 @@ class LazyModel(gtk.GenericTreeModel): if self._view is not None: cursor = self._view.get_cursor() - try: - self._closing = True - self._view.set_model(None) - finally: - self._closing = False + self._unset_view_model() self._view = view self._cache = {} @@ -166,15 +162,6 @@ class LazyModel(gtk.GenericTreeModel): self._update_columns() - # 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, )) - count = self._source.get_count() if self._frame[0] >= count: self._frame = (0, -1) @@ -183,8 +170,12 @@ class LazyModel(gtk.GenericTreeModel): 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: + self._unset_view_model() + self._view.set_model(self) + else: + for i in range(self._frame[0], self._frame[1]+1): + self.emit('row-changed', (i, ), self.get_iter((i, ))) self._last_count = count @@ -202,6 +193,13 @@ class LazyModel(gtk.GenericTreeModel): pos = self.get_path(pos) return self._get_row(pos[0], frame or (pos, pos)) + def _unset_view_model(self): + try: + self._closing = True + self._view.set_model(None) + finally: + self._closing = False + def __delayed_fetch_cb(self, source, offset, metadata): if not offset in self._in_process: logging.debug('__delayed_fetch_cb: no offset=%s' % offset) |