E-book viewer: Handle horizontal wheel events as section jumps in paged mode

Also handle horizontal wheel events in cover flow. Fixes #2019426 [vertical mousewheel function not implemented](https://bugs.launchpad.net/calibre/+bug/2019426)
This commit is contained in:
Kovid Goyal 2023-05-19 07:17:05 +05:30
parent 5083bc80db
commit 04fa47ddaf
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 18 additions and 7 deletions

View File

@ -231,6 +231,9 @@ class CoverFlow(pictureflow.PictureFlow):
return self.minimumSize()
def wheelEvent(self, ev):
if ev.angleDelta().x():
d = ev.angleDelta().x()
if ev.angleDelta().y():
d = ev.angleDelta().y()
if abs(d) > 0:
ev.accept()

View File

@ -691,13 +691,18 @@ class HandleWheel:
self.accumulated_scroll = 0
def onwheel(self, evt):
if not evt.deltaY:
if not (evt.deltaY or evt.deltaX):
return
if evt.deltaY:
backward = evt.deltaY < 0
if evt.deltaMode is window.WheelEvent.DOM_DELTA_PIXEL:
self.add_pixel_scroll(backward, Math.abs(evt.deltaY))
else:
self.do_scroll(backward)
if evt.deltaX:
backward = evt.deltaX < 0
self.do_section_jump(backward)
def add_pixel_scroll(self, backward, deltaY):
now = window.performance.now()
@ -721,6 +726,9 @@ class HandleWheel:
else:
scroll_to_pos(pos)
def do_section_jump(self, backward):
self.reset()
next_spine_item(backward)
wheel_handler = HandleWheel()
onwheel = wheel_handler.onwheel