From a0cdef436aa2296a631d50b2c483be8cf90c62d3 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Mon, 30 May 2011 16:28:17 +0000 Subject: Fix #10806 - No scrolling in Read Read had implemented scrolling by page (with page up/down keys), this patch implement scroll by steps with the keys up/down in pdf and epub backends. --- diff --git a/epubview/epubview.py b/epubview/epubview.py index 5dccad0..b9f157c 100644 --- a/epubview/epubview.py +++ b/epubview/epubview.py @@ -27,7 +27,6 @@ import BeautifulSoup from epub import _Epub from jobs import _JobPaginator as _Paginator - LOADING_HTML = '''

Loading...

@@ -249,7 +248,8 @@ class _View(gtk.HBox): Scrolls through the pages. Scrolling is horizontal if horizontal is set to True Valid scrolltypes are: - gtk.SCROLL_PAGE_BACKWARD and gtk.SCROLL_PAGE_FORWARD + gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_PAGE_FORWARD, + gtk.SCROLL_STEP_BACKWARD and gtk.SCROLL_STEP_FORWARD ''' if scrolltype == gtk.SCROLL_PAGE_BACKWARD: self.__going_back = True @@ -261,6 +261,16 @@ class _View(gtk.HBox): self.__going_fwd = True if not self._do_page_transition(): self._view.move_cursor(gtk.MOVEMENT_PAGES, 1) + elif scrolltype == gtk.SCROLL_STEP_BACKWARD: + self.__going_fwd = False + self.__going_back = True + if not self._do_page_transition(): + self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, -1) + elif scrolltype == gtk.SCROLL_STEP_FORWARD: + self.__going_fwd = True + self.__going_back = False + if not self._do_page_transition(): + self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, 1) else: print ('Got unsupported scrolltype %s' % str(scrolltype)) diff --git a/evinceadapter.py b/evinceadapter.py index 64b5cb7..3d3350c 100644 --- a/evinceadapter.py +++ b/evinceadapter.py @@ -14,7 +14,7 @@ class EvinceViewer(): self._view = evince.View() def setup(self, activity): - + self._activity = activity self._view.connect('selection-changed', activity._view_selection_changed_cb) @@ -222,14 +222,30 @@ class EvinceViewer(): Scrolls through the pages. Scrolling is horizontal if horizontal is set to True Valid scrolltypes are: - gtk.SCROLL_PAGE_BACKWARD and gtk.SCROLL_PAGE_FORWARD + gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_PAGE_FORWARD, + gtk.SCROLL_STEP_BACKWARD and gtk.SCROLL_STEP_FORWARD ''' + _logger.error('scroll: %s', scrolltype) + if scrolltype == gtk.SCROLL_PAGE_BACKWARD: self._view.scroll(gtk.SCROLL_PAGE_BACKWARD, -1) elif scrolltype == gtk.SCROLL_PAGE_FORWARD: self._view.scroll(gtk.SCROLL_PAGE_FORWARD, 1) + elif scrolltype == gtk.SCROLL_STEP_BACKWARD: + self._scroll_step(False) + elif scrolltype == gtk.SCROLL_STEP_FORWARD: + self._scroll_step(True) else: print ('Got unsupported scrolltype %s' % str(scrolltype)) + def _scroll_step(self, forward): + v_adj = self._activity._scrolled.get_vadjustment() + v_value = v_adj.get_value() + step = v_adj.get_step_increment() + if forward: + v_adj.set_value(v_value + step) + else: + v_adj.set_value(v_value - step) + def copy(self): self._view.copy() -- cgit v0.9.1