Make {,back}space pan between the edges of a zoomed page.
[automanga.git] / manga / reader.py
index 6694ecd..b753042 100644 (file)
@@ -295,11 +295,12 @@ class msgproc(object):
         self._prog = None
 
     def prog(self, p):
-        if p is not None and self._prog is None:
-            self._prog = gtk.ProgressBar()
+        if p is not None:
+            if self._prog is None:
+                self._prog = gtk.ProgressBar()
+                self.hlay.pack_start(self._prog, padding=5)
+                self._prog.show()
             self._prog.set_fraction(p)
-            self.hlay.pack_start(self._prog, padding=5)
-            self._prog.show()
         elif p is None and self._prog is not None:
             self.hlay.remove(self._prog)
             self._prog = None
@@ -634,9 +635,15 @@ class reader(gtk.Window):
                 self.page.set_off((self.page.get_asize()[0], self.page.off[1]))
         if self.point is not None:
             if ev.keyval in [ord(' ')]:
-                self.fetchpage(self.point.next, lambda page: self.preload.set(preload(relpageget(page, False, self.cache))))
+                if self.page and self.page.off[1] + self.page.get_asize()[1] < self.page.get_zsize()[1]:
+                    self.pan((0, self.page.get_asize()[1] - 50))
+                else:
+                    self.fetchpage(self.point.next, lambda page: self.preload.set(preload(relpageget(page, False, self.cache))))
             elif ev.keyval in [65288]:
-                self.fetchpage(self.point.prev, lambda page: self.preload.set(preload(relpageget(page, True, self.cache))))
+                if self.page and self.page.off[1] > 0:
+                    self.pan((0, -(self.page.get_asize()[1] - 50)))
+                else:
+                    self.fetchpage(self.point.prev, lambda page: self.preload.set(preload(relpageget(page, True, self.cache))))
             elif ev.keyval in [ord('R'), ord('r')]:
                 page = self.point.cur.cur
                 del self.cache[page]