From b1724b9e475aa8ac3f5de0ae98b3680105ae1fda Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Wed, 30 Sep 2015 15:13:21 -0700 Subject: [PATCH] fix(thread-list): Recompute visible region after window resize --- src/components/list-tabular.cjsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/list-tabular.cjsx b/src/components/list-tabular.cjsx index 73c4e269c..04ec50438 100644 --- a/src/components/list-tabular.cjsx +++ b/src/components/list-tabular.cjsx @@ -21,7 +21,7 @@ class ListTabularItem extends React.Component # React.Perf.wasted-time from ~300msec to 20msec by doing a deep # comparison of props before triggering a re-render. 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 return true if not Utils.isEqualReact(_.omit(@props, 'item'), _.omit(nextProps, 'item')) @@ -84,8 +84,12 @@ class ListTabular extends React.Component renderedRangeEnd: -1 componentDidMount: => + window.addEventListener('resize', @onWindowResize, true) @updateRangeState() + componentWillUnmount: => + window.removeEventListener('resize', @onWindowResize, true) + componentDidUpdate: (prevProps, prevState) => # If our view has been swapped out for an entirely different one, # reset our scroll position to the top. @@ -96,6 +100,9 @@ class ListTabular extends React.Component @updateRangeState() @updateRangeStateFiring = false + onWindowResize: => + @_onWindowResize ?= _.debounce(@updateRangeState, 50) + @_onWindowResize() onScroll: => # If we've shifted enough pixels from our previous scrollTop to require