mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix scroll to element on Safari
This commit is contained in:
parent
7dbdc040d9
commit
757c9a5c9e
@ -56,6 +56,9 @@ def flow_viewport_scroll_into_view(elem):
|
||||
def flow_reset_globals():
|
||||
pass
|
||||
|
||||
def flow_reset_transforms():
|
||||
pass
|
||||
|
||||
def paged_viewport_y():
|
||||
return 0
|
||||
|
||||
@ -64,6 +67,7 @@ scroll_viewport.y = flow_viewport_y
|
||||
scroll_viewport.scroll_to = flow_viewport_scroll_to
|
||||
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
||||
scroll_viewport.reset_globals = flow_reset_globals
|
||||
scroll_viewport.reset_transforms = flow_reset_transforms
|
||||
|
||||
if is_ios:
|
||||
window_width = def ():
|
||||
@ -101,10 +105,12 @@ if is_ios:
|
||||
p = p.offsetParent
|
||||
# left -= window_width() // 2
|
||||
paged_viewport_scroll_to(max(0, left), 0)
|
||||
paged_reset_globals = def():
|
||||
document.documentElement.style.transform = 'none'
|
||||
paged_content_width = def():
|
||||
return document.documentElement.scrollWidth
|
||||
paged_reset_transforms = def():
|
||||
document.documentElement.style.transform = 'none'
|
||||
paged_reset_globals = def():
|
||||
paged_reset_transforms()
|
||||
|
||||
else:
|
||||
window_width = def():
|
||||
@ -117,6 +123,8 @@ else:
|
||||
paged_reset_globals = flow_reset_globals
|
||||
paged_content_width = def():
|
||||
return document.documentElement.scrollWidth
|
||||
paged_reset_transforms = def():
|
||||
pass
|
||||
|
||||
scroll_viewport.width = window_width
|
||||
scroll_viewport.height = window_height
|
||||
@ -135,12 +143,14 @@ def set_layout_mode(val):
|
||||
scroll_viewport.scroll_to = flow_viewport_scroll_to
|
||||
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
||||
scroll_viewport.reset_globals = flow_reset_globals
|
||||
scroll_viewport.reset_transforms = flow_reset_transforms
|
||||
else:
|
||||
scroll_viewport.x = paged_viewport_x
|
||||
scroll_viewport.y = paged_viewport_y
|
||||
scroll_viewport.scroll_to = paged_viewport_scroll_to
|
||||
scroll_viewport.scroll_into_view = paged_viewport_scroll_into_view
|
||||
scroll_viewport.reset_globals = paged_reset_globals
|
||||
scroll_viewport.reset_transforms = paged_reset_transforms
|
||||
|
||||
def current_spine_item():
|
||||
return current_spine_item.value
|
||||
|
@ -341,6 +341,7 @@ def jump_to_anchor(name):
|
||||
|
||||
def scroll_to_elem(elem):
|
||||
scroll_viewport.scroll_into_view(elem)
|
||||
scroll_viewport.reset_transforms() # needed for viewport_to_document()
|
||||
|
||||
if in_paged_mode:
|
||||
# Ensure we are scrolled to the column containing elem
|
||||
@ -365,6 +366,7 @@ def snap_to_selection():
|
||||
# Ensure that the viewport is positioned at the start of the column
|
||||
# containing the start of the current selection
|
||||
if in_paged_mode:
|
||||
scroll_viewport.reset_transforms() # needed for viewport_to_document()
|
||||
sel = window.getSelection()
|
||||
r = sel.getRangeAt(0).getBoundingClientRect()
|
||||
node = sel.anchorNode
|
||||
|
Loading…
x
Reference in New Issue
Block a user