mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Tap-hold now always simulates a mouse click
This commit is contained in:
parent
67f0358296
commit
d0aff1e53a
@ -4,6 +4,10 @@ from __python__ import hash_literals, bound_methods
|
|||||||
|
|
||||||
from read_book.globals import get_boss
|
from read_book.globals import get_boss
|
||||||
|
|
||||||
|
HOLD_THRESHOLD = 750 # milliseconds
|
||||||
|
TAP_LINK_THRESHOLD = 5 # pixels
|
||||||
|
|
||||||
|
|
||||||
gesture_id = 0
|
gesture_id = 0
|
||||||
|
|
||||||
def copy_touch(t):
|
def copy_touch(t):
|
||||||
@ -65,8 +69,6 @@ def find_link(x, y):
|
|||||||
p = p.parentNode
|
p = p.parentNode
|
||||||
|
|
||||||
|
|
||||||
TAP_LINK_THRESHOLD = 5
|
|
||||||
|
|
||||||
def tap_on_link(gesture):
|
def tap_on_link(gesture):
|
||||||
for delta_x in [0, TAP_LINK_THRESHOLD, -TAP_LINK_THRESHOLD]:
|
for delta_x in [0, TAP_LINK_THRESHOLD, -TAP_LINK_THRESHOLD]:
|
||||||
for delta_y in [0, TAP_LINK_THRESHOLD, -TAP_LINK_THRESHOLD]:
|
for delta_y in [0, TAP_LINK_THRESHOLD, -TAP_LINK_THRESHOLD]:
|
||||||
@ -122,7 +124,7 @@ class TouchHandler:
|
|||||||
found_hold = False
|
found_hold = False
|
||||||
for touchid in self.ongoing_touches:
|
for touchid in self.ongoing_touches:
|
||||||
touch = self.ongoing_touches[touchid]
|
touch = self.ongoing_touches[touchid]
|
||||||
if touch.active and now - touch.mtime > 750:
|
if touch.active and now - touch.mtime > HOLD_THRESHOLD:
|
||||||
touch.is_held = True
|
touch.is_held = True
|
||||||
found_hold = True
|
found_hold = True
|
||||||
if found_hold:
|
if found_hold:
|
||||||
@ -186,10 +188,16 @@ class TouchHandler:
|
|||||||
return
|
return
|
||||||
if gesture.type is 'tap':
|
if gesture.type is 'tap':
|
||||||
if gesture.is_held:
|
if gesture.is_held:
|
||||||
if self.handled_tap_hold:
|
if not self.handled_tap_hold:
|
||||||
return
|
self.handled_tap_hold = True
|
||||||
self.handled_tap_hold = True
|
fake_click = new MouseEvent('click', {
|
||||||
# TODO: send a fake click event
|
'clientX': gesture.viewport_x, 'clientY':gesture.viewport_y, 'buttons': 1,
|
||||||
|
'view':window.self, 'bubbles': True, 'cancelable': True,
|
||||||
|
})
|
||||||
|
elem = document.elementFromPoint(fake_click.clientX, fake_click.clientY)
|
||||||
|
if elem:
|
||||||
|
elem.dispatchEvent(fake_click)
|
||||||
|
return
|
||||||
if not tap_on_link(gesture):
|
if not tap_on_link(gesture):
|
||||||
# TODO: Convert the tap gesture into
|
# TODO: Convert the tap gesture into
|
||||||
# semantic gestures based on position of tap (next page/previous
|
# semantic gestures based on position of tap (next page/previous
|
||||||
|
Loading…
x
Reference in New Issue
Block a user