mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Viewer: Fix occasional skipping over a chapter when flick scrolling in flow mode
This commit is contained in:
parent
5bf261244d
commit
7b22d7f51a
@ -5,7 +5,7 @@ from __python__ import bound_methods, hash_literals
|
||||
from select import word_at_point
|
||||
|
||||
from dom import set_css
|
||||
from read_book.globals import get_boss
|
||||
from read_book.globals import current_spine_item, get_boss
|
||||
from read_book.viewport import scroll_viewport
|
||||
from utils import document_height, viewport_to_document
|
||||
|
||||
@ -53,10 +53,19 @@ def report_human_scroll(amt):
|
||||
clear_small_scrolls()
|
||||
|
||||
|
||||
last_change_spine_item_request = {}
|
||||
|
||||
|
||||
def _check_for_scroll_end(func, obj, args, report):
|
||||
before = window.pageYOffset
|
||||
func.apply(obj, args)
|
||||
if window.pageYOffset is before:
|
||||
now = Date.now()
|
||||
csi = current_spine_item()
|
||||
if last_change_spine_item_request.name is csi.name and now - last_change_spine_item_request.at < 2000:
|
||||
return False
|
||||
last_change_spine_item_request.name = csi.name
|
||||
last_change_spine_item_request.at = now
|
||||
get_boss().send_message('next_spine_item', previous=args[0] < 0)
|
||||
return False
|
||||
if report:
|
||||
@ -105,8 +114,7 @@ smooth_y_data = {'last_event_at':0, 'up': False, 'timer':None, 'source':'wheel',
|
||||
|
||||
def do_y_scroll():
|
||||
dy = (-1 if smooth_y_data.up else 1) * smooth_y_data.pixels_per_ms * smooth_y_data.scroll_interval
|
||||
if Math.abs(dy) >= 1:
|
||||
scroll_by(dy)
|
||||
if Math.abs(dy) >= 1 and scroll_by(dy):
|
||||
if Date.now() - smooth_y_data.last_event_at < smooth_y_data.stop_scrolling_after:
|
||||
smooth_y_data.timer = setTimeout(do_y_scroll, smooth_y_data.scroll_interval)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user