diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-01-07 14:26:31 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-01-07 14:26:31 (GMT) |
commit | 40d859ca33f0a11a98cb0e14cd5016fc6743f964 (patch) | |
tree | 4def051b33b9658a328a90d0abcba21803970467 /src | |
parent | baeeace5dc3cf874f78435726dab0c3f3435a300 (diff) |
Only schedule one refresh at a time
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/journal/listview.py | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py index 323da8d..4ee6865 100644 --- a/src/jarabe/journal/listview.py +++ b/src/jarabe/journal/listview.py @@ -47,8 +47,8 @@ class BaseListView(gtk.HBox): self._result_set = None self._entries = [] self._page_size = 0 - self._last_value = -1 self._reflow_sid = 0 + self._do_scroll_hid = None gtk.HBox.__init__(self) self.set_flags(gtk.HAS_FOCUS|gtk.CAN_FOCUS) @@ -126,19 +126,13 @@ class BaseListView(gtk.HBox): self._vscrollbar.hide() def _vadjustment_value_changed_cb(self, vadjustment): - gobject.idle_add(self._do_scroll) + if self._do_scroll_hid is None: + self._do_scroll_hid = gobject.idle_add(self._do_scroll) - def _do_scroll(self, force=False): - import time - t = time.time() + def _do_scroll(self): + current_position = int(self._vadjustment.props.value) - value = int(self._vadjustment.props.value) - - if value == self._last_value and not force: - return - self._last_value = value - - self._result_set.seek(value) + self._result_set.seek(current_position) metadata_list = self._result_set.read(self._page_size) if self._result_set.length != self._vadjustment.props.upper: @@ -147,9 +141,8 @@ class BaseListView(gtk.HBox): self._refresh_view(metadata_list) self._dirty = False - - logging.debug('_do_scroll %r %r\n' % (value, (time.time() - t))) - + + self._do_scroll_hid = None return False def _refresh_view(self, metadata_list): @@ -207,7 +200,7 @@ class BaseListView(gtk.HBox): self._show_message(EMPTY_JOURNAL) else: self._clear_message() - self._do_scroll(force=True) + self._do_scroll() def _scroll_event_cb(self, hbox, event): if event.direction == gtk.gdk.SCROLL_UP: @@ -286,7 +279,7 @@ class BaseListView(gtk.HBox): if self._vadjustment.props.value > max_value: self._vadjustment.props.value = max_value else: - self._do_scroll(force=True) + self._do_scroll() self._reflow_sid = 0 |