diff options
author | Gonzalo Odiard <godiard@sugarlabs.org> | 2011-05-30 17:45:54 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@sugarlabs.org> | 2011-05-31 13:12:55 (GMT) |
commit | 0ade8026a10108e0d4c2e945f3743945814a9dff (patch) | |
tree | db3fa667bb0b40f2f4b0dff2392570b01e145b71 | |
parent | a0cdef436aa2296a631d50b2c483be8cf90c62d3 (diff) |
Fix #10806 - No scrolling in Read (text backend)
This patch implements step scroll in the text backend.
-rw-r--r-- | textadapter.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/textadapter.py b/textadapter.py index a6cef2b..d2246b6 100644 --- a/textadapter.py +++ b/textadapter.py @@ -216,25 +216,31 @@ class TextViewer(gobject.GObject): self._show_page(self._current_page) self.emit('page-changed', old_page, self._current_page) - def scroll(self, direction, horizontal): + def scroll(self, scrolltype, horizontal): v_adjustment = self._scrolled.get_vadjustment() - if direction == gtk.SCROLL_PAGE_BACKWARD: - if v_adjustment.value == v_adjustment.lower: + v_value = v_adjustment.value + if scrolltype in (gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_PAGE_FORWARD): + step = v_adjustment.page_increment + else: + step = v_adjustment.step_increment + + if scrolltype in (gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_STEP_BACKWARD): + if v_value <= v_adjustment.lower: self.previous_page() + v_adjustment.value = v_adjustment.upper - \ + v_adjustment.page_size return - if v_adjustment.value > v_adjustment.lower: - new_value = v_adjustment.value - v_adjustment.step_increment + if v_value > v_adjustment.lower: + new_value = v_value - step if new_value < v_adjustment.lower: new_value = v_adjustment.lower v_adjustment.value = new_value - else: - if v_adjustment.value == \ - v_adjustment.upper - v_adjustment.page_size: + elif scrolltype in (gtk.SCROLL_PAGE_FORWARD, gtk.SCROLL_STEP_FORWARD): + if v_value >= v_adjustment.upper - v_adjustment.page_size: self.next_page() return - if v_adjustment.value < \ - v_adjustment.upper - v_adjustment.page_size: - new_value = v_adjustment.value + v_adjustment.step_increment + if v_value < v_adjustment.upper - v_adjustment.page_size: + new_value = v_value + step if new_value > v_adjustment.upper - v_adjustment.page_size: new_value = v_adjustment.upper - v_adjustment.page_size v_adjustment.value = new_value |