diff --git a/app/pdfviewer/buffer.py b/app/pdfviewer/buffer.py index c7bdd0c..686336d 100644 --- a/app/pdfviewer/buffer.py +++ b/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