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():
|
def flow_reset_globals():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def flow_reset_transforms():
|
||||||
|
pass
|
||||||
|
|
||||||
def paged_viewport_y():
|
def paged_viewport_y():
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@ -64,6 +67,7 @@ scroll_viewport.y = flow_viewport_y
|
|||||||
scroll_viewport.scroll_to = flow_viewport_scroll_to
|
scroll_viewport.scroll_to = flow_viewport_scroll_to
|
||||||
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
||||||
scroll_viewport.reset_globals = flow_reset_globals
|
scroll_viewport.reset_globals = flow_reset_globals
|
||||||
|
scroll_viewport.reset_transforms = flow_reset_transforms
|
||||||
|
|
||||||
if is_ios:
|
if is_ios:
|
||||||
window_width = def ():
|
window_width = def ():
|
||||||
@ -101,10 +105,12 @@ if is_ios:
|
|||||||
p = p.offsetParent
|
p = p.offsetParent
|
||||||
# left -= window_width() // 2
|
# left -= window_width() // 2
|
||||||
paged_viewport_scroll_to(max(0, left), 0)
|
paged_viewport_scroll_to(max(0, left), 0)
|
||||||
paged_reset_globals = def():
|
|
||||||
document.documentElement.style.transform = 'none'
|
|
||||||
paged_content_width = def():
|
paged_content_width = def():
|
||||||
return document.documentElement.scrollWidth
|
return document.documentElement.scrollWidth
|
||||||
|
paged_reset_transforms = def():
|
||||||
|
document.documentElement.style.transform = 'none'
|
||||||
|
paged_reset_globals = def():
|
||||||
|
paged_reset_transforms()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
window_width = def():
|
window_width = def():
|
||||||
@ -117,6 +123,8 @@ else:
|
|||||||
paged_reset_globals = flow_reset_globals
|
paged_reset_globals = flow_reset_globals
|
||||||
paged_content_width = def():
|
paged_content_width = def():
|
||||||
return document.documentElement.scrollWidth
|
return document.documentElement.scrollWidth
|
||||||
|
paged_reset_transforms = def():
|
||||||
|
pass
|
||||||
|
|
||||||
scroll_viewport.width = window_width
|
scroll_viewport.width = window_width
|
||||||
scroll_viewport.height = window_height
|
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_to = flow_viewport_scroll_to
|
||||||
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
scroll_viewport.scroll_into_view = flow_viewport_scroll_into_view
|
||||||
scroll_viewport.reset_globals = flow_reset_globals
|
scroll_viewport.reset_globals = flow_reset_globals
|
||||||
|
scroll_viewport.reset_transforms = flow_reset_transforms
|
||||||
else:
|
else:
|
||||||
scroll_viewport.x = paged_viewport_x
|
scroll_viewport.x = paged_viewport_x
|
||||||
scroll_viewport.y = paged_viewport_y
|
scroll_viewport.y = paged_viewport_y
|
||||||
scroll_viewport.scroll_to = paged_viewport_scroll_to
|
scroll_viewport.scroll_to = paged_viewport_scroll_to
|
||||||
scroll_viewport.scroll_into_view = paged_viewport_scroll_into_view
|
scroll_viewport.scroll_into_view = paged_viewport_scroll_into_view
|
||||||
scroll_viewport.reset_globals = paged_reset_globals
|
scroll_viewport.reset_globals = paged_reset_globals
|
||||||
|
scroll_viewport.reset_transforms = paged_reset_transforms
|
||||||
|
|
||||||
def current_spine_item():
|
def current_spine_item():
|
||||||
return current_spine_item.value
|
return current_spine_item.value
|
||||||
|
@ -341,6 +341,7 @@ def jump_to_anchor(name):
|
|||||||
|
|
||||||
def scroll_to_elem(elem):
|
def scroll_to_elem(elem):
|
||||||
scroll_viewport.scroll_into_view(elem)
|
scroll_viewport.scroll_into_view(elem)
|
||||||
|
scroll_viewport.reset_transforms() # needed for viewport_to_document()
|
||||||
|
|
||||||
if in_paged_mode:
|
if in_paged_mode:
|
||||||
# Ensure we are scrolled to the column containing elem
|
# 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
|
# Ensure that the viewport is positioned at the start of the column
|
||||||
# containing the start of the current selection
|
# containing the start of the current selection
|
||||||
if in_paged_mode:
|
if in_paged_mode:
|
||||||
|
scroll_viewport.reset_transforms() # needed for viewport_to_document()
|
||||||
sel = window.getSelection()
|
sel = window.getSelection()
|
||||||
r = sel.getRangeAt(0).getBoundingClientRect()
|
r = sel.getRangeAt(0).getBoundingClientRect()
|
||||||
node = sel.anchorNode
|
node = sel.anchorNode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user