Use update_scroll_offset optimize redraw logic.

master
Andy Stewart 8 years ago
parent 3ea5be7f7f
commit 85dc02ab49
  1. 34
      app/pdfviewer/buffer.py

@ -230,8 +230,7 @@ class PdfViewerWidget(QWidget):
@build_context_wrap
def wheelEvent(self, event):
self.scroll_offset = max(min(self.scroll_offset - self.scale * event.angleDelta().y() / 120 * self.mouse_scroll_offset, self.max_scroll_offset()), 0)
self.update()
self.update_scroll_offset(max(min(self.scroll_offset - self.scale * event.angleDelta().y() / 120 * self.mouse_scroll_offset, self.max_scroll_offset()), 0))
@build_context_wrap
def keyPressEvent(self, event):
@ -309,30 +308,24 @@ class PdfViewerWidget(QWidget):
self.update()
def scroll_up(self):
self.scroll_offset = min(self.scroll_offset + self.scale * self.scroll_step, self.max_scroll_offset())
self.update()
self.update_scroll_offset(min(self.scroll_offset + self.scale * self.scroll_step, self.max_scroll_offset()))
def scroll_down(self):
self.scroll_offset = max(self.scroll_offset - self.scale * self.scroll_step, 0)
self.update()
self.update_scroll_offset(max(self.scroll_offset - self.scale * self.scroll_step, 0))
def scroll_up_page(self):
# Adjust scroll step to make users continue reading fluently.
self.scroll_offset = min(self.scroll_offset + self.rect().height() - self.scroll_step, self.max_scroll_offset())
self.update()
self.update_scroll_offset(min(self.scroll_offset + self.rect().height() - self.scroll_step, self.max_scroll_offset()))
def scroll_down_page(self):
# Adjust scroll step to make users continue reading fluently.
self.scroll_offset = max(self.scroll_offset - self.rect().height() + self.scroll_step, 0)
self.update()
self.update_scroll_offset(max(self.scroll_offset - self.rect().height() + self.scroll_step, 0))
def scroll_to_home(self):
self.scroll_offset = 0
self.update()
self.update_scroll_offset(0)
def scroll_to_end(self):
self.scroll_offset = self.max_scroll_offset()
self.update()
self.update_scroll_offset(self.max_scroll_offset())
def zoom_in(self):
self.read_mode = "fit_to_customize"
@ -350,12 +343,17 @@ class PdfViewerWidget(QWidget):
self.update()
def jump_to_page(self, page_num):
self.scroll_offset = min(max(self.scale * (int(page_num) - 1) * self.page_height, 0), self.max_scroll_offset())
self.update()
self.update_scroll_offset(min(max(self.scale * (int(page_num) - 1) * self.page_height, 0), self.max_scroll_offset()))
def jump_to_percent(self, percent):
self.scroll_offset = min(max(self.scale * (self.page_total_number * self.page_height * percent / 100.0), 0), self.max_scroll_offset())
self.update()
self.update_scroll_offset(min(max(self.scale * (self.page_total_number * self.page_height * percent / 100.0), 0), self.max_scroll_offset()))
def update_scroll_offset(self, new_offset):
if self.scroll_offset != new_offset:
self.scroll_offset = new_offset
self.update()
else:
print("Scroll offset is not change, don't redraw.")
if __name__ == '__main__':
import sys

Loading…
Cancel
Save