mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Port QWheelEvent usage in the ebook viewer
This commit is contained in:
parent
95d831403d
commit
f6bdc450a8
@ -1161,18 +1161,21 @@ class DocumentView(QWebView): # {{{
|
|||||||
painter.end()
|
painter.end()
|
||||||
|
|
||||||
def wheelEvent(self, event):
|
def wheelEvent(self, event):
|
||||||
|
if event.phase() != Qt.ScrollUpdate:
|
||||||
|
return
|
||||||
mods = event.modifiers()
|
mods = event.modifiers()
|
||||||
|
num_degrees = event.angleDelta().y() // 8
|
||||||
if mods & Qt.CTRL:
|
if mods & Qt.CTRL:
|
||||||
if self.manager is not None and event.delta() != 0:
|
if self.manager is not None and num_degrees != 0:
|
||||||
(self.manager.font_size_larger if event.delta() > 0 else
|
(self.manager.font_size_larger if num_degrees > 0 else
|
||||||
self.manager.font_size_smaller)()
|
self.manager.font_size_smaller)()
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.document.in_paged_mode:
|
if self.document.in_paged_mode:
|
||||||
if abs(event.delta()) < 15:
|
if abs(num_degrees) < 15:
|
||||||
return
|
return
|
||||||
typ = 'screen' if self.document.wheel_flips_pages else 'col'
|
typ = 'screen' if self.document.wheel_flips_pages else 'col'
|
||||||
direction = 'next' if event.delta() < 0 else 'previous'
|
direction = 'next' if num_degrees < 0 else 'previous'
|
||||||
loc = self.document.javascript('paged_display.%s_%s_location()'%(
|
loc = self.document.javascript('paged_display.%s_%s_location()'%(
|
||||||
direction, typ), typ='int')
|
direction, typ), typ='int')
|
||||||
if loc > -1:
|
if loc > -1:
|
||||||
@ -1188,7 +1191,7 @@ class DocumentView(QWebView): # {{{
|
|||||||
event.accept()
|
event.accept()
|
||||||
return
|
return
|
||||||
|
|
||||||
if event.delta() < -14:
|
if num_degrees < -14:
|
||||||
if self.document.wheel_flips_pages:
|
if self.document.wheel_flips_pages:
|
||||||
self.next_page()
|
self.next_page()
|
||||||
event.accept()
|
event.accept()
|
||||||
@ -1199,7 +1202,7 @@ class DocumentView(QWebView): # {{{
|
|||||||
self.manager.next_document()
|
self.manager.next_document()
|
||||||
event.accept()
|
event.accept()
|
||||||
return
|
return
|
||||||
elif event.delta() > 14:
|
elif num_degrees > 14:
|
||||||
if self.document.wheel_flips_pages:
|
if self.document.wheel_flips_pages:
|
||||||
self.previous_page()
|
self.previous_page()
|
||||||
event.accept()
|
event.accept()
|
||||||
@ -1213,8 +1216,10 @@ class DocumentView(QWebView): # {{{
|
|||||||
|
|
||||||
ret = QWebView.wheelEvent(self, event)
|
ret = QWebView.wheelEvent(self, event)
|
||||||
|
|
||||||
scroll_amount = (event.delta() / 120.0) * .2 * -1
|
num_degrees_h = event.angleDelta().x() // 8
|
||||||
if event.orientation() == Qt.Vertical:
|
vertical = abs(num_degrees) > abs(num_degrees_h)
|
||||||
|
scroll_amount = ((num_degrees if vertical else num_degrees_h)/ 120.0) * .2 * -1
|
||||||
|
if vertical:
|
||||||
self.scroll_by(0, self.document.viewportSize().height() * scroll_amount)
|
self.scroll_by(0, self.document.viewportSize().height() * scroll_amount)
|
||||||
else:
|
else:
|
||||||
self.scroll_by(self.document.viewportSize().width() * scroll_amount, 0)
|
self.scroll_by(self.document.viewportSize().width() * scroll_amount, 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user