From 6d5f1fac3b8a69f23a680f3f083cbe687c009acd Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 15 Dec 2010 22:58:48 -0700 Subject: [PATCH] E-book viewer: Disable page flip animation when a key is help down --- src/calibre/gui2/viewer/documentview.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index d033ae133b..8ccc0b0f77 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -462,6 +462,7 @@ class DocumentView(QWebView): def __init__(self, *args): QWebView.__init__(self, *args) self.flipper = SlideFlip(self) + self.is_auto_repeat_event = False self.debug_javascript = False self.shortcuts = Shortcuts(SHORTCUTS, 'shortcuts/viewer') self.self_closing_pat = re.compile(r'<([a-z1-6]+)\s+([^>]+)/>', @@ -735,9 +736,9 @@ class DocumentView(QWebView): self.scroll_by(y=overlap) def previous_page(self): - if self.flipper.running: + if self.flipper.running and not self.is_auto_repeat_event: return - epf = self.document.enable_page_flip + epf = self.document.enable_page_flip and not self.is_auto_repeat_event delta_y = self.document.window_height - 25 if self.document.at_top: @@ -760,9 +761,9 @@ class DocumentView(QWebView): self.manager.scrolled(self.scroll_fraction) def next_page(self): - if self.flipper.running: + if self.flipper.running and not self.is_auto_repeat_event: return - epf = self.document.enable_page_flip + epf = self.document.enable_page_flip and not self.is_auto_repeat_event window_height = self.document.window_height document_height = self.document.height @@ -896,7 +897,11 @@ class DocumentView(QWebView): key = self.shortcuts.get_match(event) func = self.goto_location_actions.get(key, None) if func is not None: - func() + self.is_auto_repeat_event = event.isAutoRepeat() + try: + func() + finally: + self.is_auto_repeat_event = False elif key == 'Down': self.scroll_by(y=15) elif key == 'Up':