Pdfviewer: keep same offset when user do scale operation.

master
Andy Stewart 8 years ago
parent 67ff2005bd
commit a9dbffb97a
  1. 1
      TODOLIST.md
  2. 22
      app/pdfviewer/buffer.py

@ -7,7 +7,6 @@
* Browser: implement js plugin like vimium
* ImageViewer: add zoom support
* Pdfviewer: hover mouse to detect url postion, ctrl + button can open url under mouse.
* Pdfviewer: keep same offset when user do scale operation.
* Pdfviewer: fix page still in scrolling even user release key.
* PdfViewer: use mupdf/page.searchFor implement search text in pdf.
* PdfViewer: split window first, then scroll event cause view blank

@ -187,15 +187,21 @@ class PdfViewerWidget(QWidget):
elif event.key() == Qt.Key_G:
self.send_jump_page_message.emit()
def scale_to(self, new_scale):
self.scroll_offset = new_scale * 1.0 / self.scale * self.scroll_offset
self.scale = new_scale
def scale_to_width(self):
self.scale_to(self.rect().width() * 1.0 / self.page_width)
def scale_to_height(self):
self.scale_to(self.rect().size().height() * 1.0 / self.page_height)
def update_scale(self):
if self.read_mode == "fit_to_width":
new_scale = self.rect().width() * 1.0 / self.page_width
self.scroll_offset = new_scale * 1.0 / self.scale * self.scroll_offset
self.scale = new_scale
self.scale_to_width()
elif self.read_mode == "fit_to_height":
new_scale = self.rect().size().height() * 1.0 / self.page_height
self.scroll_offset = new_scale * 1.0 / self.scale * self.scroll_offset
self.scale = new_scale
self.scale_to_height()
def max_scroll_offset(self):
return self.scale * self.page_height * self.page_total_number - self.rect().height()
@ -239,12 +245,12 @@ class PdfViewerWidget(QWidget):
def zoom_in(self):
self.read_mode = "fit_to_customize"
self.scale = min(10, self.scale + 0.2)
self.scale_to(min(10, self.scale + 0.2))
self.update()
def zoom_out(self):
self.read_mode = "fit_to_customize"
self.scale = max(1, self.scale - 0.2)
self.scale_to(max(1, self.scale - 0.2))
self.update()
def zoom_reset(self):

Loading…
Cancel
Save