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,7 +231,10 @@ class CoverFlow(pictureflow.PictureFlow):
return self.minimumSize() return self.minimumSize()
def wheelEvent(self, ev): def wheelEvent(self, ev):
d = ev.angleDelta().y() if ev.angleDelta().x():
d = ev.angleDelta().x()
if ev.angleDelta().y():
d = ev.angleDelta().y()
if abs(d) > 0: if abs(d) > 0:
ev.accept() ev.accept()
(self.showNext if d < 0 else self.showPrevious)() (self.showNext if d < 0 else self.showPrevious)()

View File

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