Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2010-02-01 02:58:24 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2010-02-01 02:58:24 (GMT)
commit05d1aab4c320503e771f3e6c9e8559fa8a145d1c (patch)
treeb09a0dff487d922bae57d16752099b93c0c0a292
parentb8f55841731f8a8973f09ed9d2d9697659beac4a (diff)
Set frame range before switching to new view
-rw-r--r--src/jarabe/journal/homogenetable.py17
-rw-r--r--src/jarabe/journal/view.py16
2 files changed, 29 insertions, 4 deletions
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)