mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-24 08:04:11 +08:00
fix(thread-list): Recompute visible region after window resize
This commit is contained in:
parent
dccffe9acb
commit
fe077d4285
1 changed files with 8 additions and 1 deletions
|
@ -21,7 +21,7 @@ class ListTabularItem extends React.Component
|
||||||
# React.Perf.wasted-time from ~300msec to 20msec by doing a deep
|
# React.Perf.wasted-time from ~300msec to 20msec by doing a deep
|
||||||
# comparison of props before triggering a re-render.
|
# comparison of props before triggering a re-render.
|
||||||
shouldComponentUpdate: (nextProps, nextState) =>
|
shouldComponentUpdate: (nextProps, nextState) =>
|
||||||
if not Utils.isEqualReact(@props.item, nextProps.item)
|
if not Utils.isEqualReact(@props.item, nextProps.item) or @props.columns isnt nextProps.columns
|
||||||
@_columnCache = null
|
@_columnCache = null
|
||||||
return true
|
return true
|
||||||
if not Utils.isEqualReact(_.omit(@props, 'item'), _.omit(nextProps, 'item'))
|
if not Utils.isEqualReact(_.omit(@props, 'item'), _.omit(nextProps, 'item'))
|
||||||
|
@ -84,8 +84,12 @@ class ListTabular extends React.Component
|
||||||
renderedRangeEnd: -1
|
renderedRangeEnd: -1
|
||||||
|
|
||||||
componentDidMount: =>
|
componentDidMount: =>
|
||||||
|
window.addEventListener('resize', @onWindowResize, true)
|
||||||
@updateRangeState()
|
@updateRangeState()
|
||||||
|
|
||||||
|
componentWillUnmount: =>
|
||||||
|
window.removeEventListener('resize', @onWindowResize, true)
|
||||||
|
|
||||||
componentDidUpdate: (prevProps, prevState) =>
|
componentDidUpdate: (prevProps, prevState) =>
|
||||||
# If our view has been swapped out for an entirely different one,
|
# If our view has been swapped out for an entirely different one,
|
||||||
# reset our scroll position to the top.
|
# reset our scroll position to the top.
|
||||||
|
@ -96,6 +100,9 @@ class ListTabular extends React.Component
|
||||||
@updateRangeState()
|
@updateRangeState()
|
||||||
@updateRangeStateFiring = false
|
@updateRangeStateFiring = false
|
||||||
|
|
||||||
|
onWindowResize: =>
|
||||||
|
@_onWindowResize ?= _.debounce(@updateRangeState, 50)
|
||||||
|
@_onWindowResize()
|
||||||
|
|
||||||
onScroll: =>
|
onScroll: =>
|
||||||
# If we've shifted enough pixels from our previous scrollTop to require
|
# If we've shifted enough pixels from our previous scrollTop to require
|
||||||
|
|
Loading…
Reference in a new issue