mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Speed up rendering in paged mode by not causing an extra re-layout to adjust the top margin of body
This commit is contained in:
parent
86455fc5f3
commit
fcdd96c2bb
@ -82,6 +82,17 @@ class PagedDisplay
|
|||||||
this.cols_per_screen = cols_per_screen
|
this.cols_per_screen = cols_per_screen
|
||||||
|
|
||||||
layout: () ->
|
layout: () ->
|
||||||
|
# Remove the top margin from the first child of body as that gets added
|
||||||
|
# to the top margin of body. This is done here just in case
|
||||||
|
# getComputedStyle() causes a relayout. The re-layout will be much
|
||||||
|
# faster before we implement the multi-column layout.
|
||||||
|
for node in document.body.childNodes
|
||||||
|
if node.nodeType == 1 # Element node
|
||||||
|
style = window.getComputedStyle(node)
|
||||||
|
if style.display in ['block', 'table']
|
||||||
|
node.style.setProperty('margin-top', '0px')
|
||||||
|
break
|
||||||
|
|
||||||
ww = window.innerWidth
|
ww = window.innerWidth
|
||||||
wh = window.innerHeight
|
wh = window.innerHeight
|
||||||
body_height = wh - this.margin_bottom = this.margin_top
|
body_height = wh - this.margin_bottom = this.margin_top
|
||||||
@ -135,11 +146,6 @@ class PagedDisplay
|
|||||||
priority = rule.style.getPropertyPriority(prop)
|
priority = rule.style.getPropertyPriority(prop)
|
||||||
rule.style.setProperty(cprop, val, priority)
|
rule.style.setProperty(cprop, val, priority)
|
||||||
|
|
||||||
# Ensure that the top margin is correct, otherwise for some documents,
|
|
||||||
# webkit lays out the body with a lot of space on top
|
|
||||||
brect = document.body.getBoundingClientRect()
|
|
||||||
if brect.top > this.margin_top
|
|
||||||
bs.setProperty('margin-top', (this.margin_top - brect.top)+'px')
|
|
||||||
this.in_paged_mode = true
|
this.in_paged_mode = true
|
||||||
this.current_margin_side = sm
|
this.current_margin_side = sm
|
||||||
return sm
|
return sm
|
||||||
|
Loading…
x
Reference in New Issue
Block a user