Refactor code into separate functions

This commit is contained in:
Kovid Goyal 2021-09-21 22:06:24 +05:30
parent 8713c65f4b
commit dc2866315b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -701,7 +701,7 @@ def scroll_to(cfi, callback, doc): # {{{
if jstype(decoded.time) is 'number': if jstype(decoded.time) is 'number':
set_current_time(decoded.node, decoded.time) set_current_time(decoded.node, decoded.time)
if decoded.range is not None: def handle_text_node():
# Character offset # Character offset
r = decoded.range r = decoded.range
so, eo = r.startOffset, r.endOffset so, eo = r.startOffset, r.endOffset
@ -721,7 +721,7 @@ def scroll_to(cfi, callback, doc): # {{{
span.setAttribute('style', 'border-width: 0; padding: 0; margin: 0') span.setAttribute('style', 'border-width: 0; padding: 0; margin: 0')
r.surroundContents(span) r.surroundContents(span)
scroll_viewport.scroll_into_view(span) scroll_viewport.scroll_into_view(span)
fn = def(): return def():
nonlocal original_node, r nonlocal original_node, r
# Remove the span and get the new position now that scrolling # Remove the span and get the new position now that scrolling
# has (hopefully) completed # has (hopefully) completed
@ -770,7 +770,8 @@ def scroll_to(cfi, callback, doc): # {{{
if callback: if callback:
callback(doc_x, doc_y) callback(doc_x, doc_y)
else:
def handle_element_node():
node = decoded.node node = decoded.node
if node.nodeType is Node.TEXT_NODE: if node.nodeType is Node.TEXT_NODE:
node = decoded.node = node.parentNode node = decoded.node = node.parentNode
@ -778,7 +779,7 @@ def scroll_to(cfi, callback, doc): # {{{
return return
scroll_viewport.scroll_into_view(node) scroll_viewport.scroll_into_view(node)
fn = def(): return def():
doc_x, doc_y = decoded_node_or_spatial_offset_to_document_position(decoded) doc_x, doc_y = decoded_node_or_spatial_offset_to_document_position(decoded)
# Abort if CFI position is invalid # Abort if CFI position is invalid
@ -796,6 +797,11 @@ def scroll_to(cfi, callback, doc): # {{{
if callback: if callback:
callback(doc_x, doc_y) callback(doc_x, doc_y)
if decoded.range is not None:
fn = handle_text_node()
else:
fn = handle_element_node()
setTimeout(fn, 10) setTimeout(fn, 10)
# }}} # }}}