Fix scroll to element on Safari

This commit is contained in:
Kovid Goyal 2017-05-28 00:33:17 +05:30
parent 7dbdc040d9
commit 757c9a5c9e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 14 additions and 2 deletions

View File

@ -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

View File

@ -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