From 05d1aab4c320503e771f3e6c9e8559fa8a145d1c Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Mon, 01 Feb 2010 02:58:24 +0000 Subject: Set frame range before switching to new view --- diff --git a/src/jarabe/journal/homogenetable.py b/src/jarabe/journal/homogenetable.py index 334dbb8..dea19fa 100644 --- a/src/jarabe/journal/homogenetable.py +++ b/src/jarabe/journal/homogenetable.py @@ -206,8 +206,23 @@ class HomogeneTable(SugarBin): begin, end = self._frame_range return xrange(begin, end + 1) + def set_frame_range(self, new): + if not new: + return + old = self.frame_range + if new[0] in old and new[-1] in old: + pass + elif len(new) <= len(old): + self.scroll_to_cell(new[-1]) + self.scroll_to_cell(new[0]) + elif not old or old[0] < new[0]: + self.scroll_to_cell(new[0] + len(old) - 1) + elif old[-1] > new[-1]: + self.scroll_to_cell(new[-1] - len(old) + 1) + """Range of visible cells""" - frame_range = gobject.property(getter=get_frame_range) + frame_range = gobject.property( + getter=get_frame_range, setter=set_frame_range) @property def frame_cells(self): diff --git a/src/jarabe/journal/view.py b/src/jarabe/journal/view.py index 84a84fd..f9d8242 100644 --- a/src/jarabe/journal/view.py +++ b/src/jarabe/journal/view.py @@ -87,14 +87,24 @@ class View(gtk.EventBox): self.view = VIEW_LIST def get_view(self): - return self._pages[self._view].child + if self._view is None: + return None + else: + return self._pages[self._view].child def set_view(self, view): if self._page == self._view: # change view only if current page is view as well self._page = view - self._view = view - self.view.set_result_set(self._result_set) + + if view != self._view: + if self.view is not None: + frame_range = self.view.frame_range + else: + frame_range = None + self._view = view + self.view.set_result_set(self._result_set) + self.view.frame_range = frame_range view = property(get_view, set_view) -- cgit v0.9.1