Make ScrollPanel.isAtBottom more reliable
Given we want to use isAtBottom to figure out whether to show 'unread messages' counts, we ought to return the current scroll state, rather than the saved one. This fixes vector-im/vector-web#576pull/21833/head
parent
722c7033bc
commit
2b169b06f5
|
@ -120,8 +120,15 @@ module.exports = React.createClass({
|
||||||
this.checkFillState();
|
this.checkFillState();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// return true if the content is fully scrolled down right now; else false.
|
||||||
|
//
|
||||||
|
// Note that if the content hasn't yet been fully populated, this may
|
||||||
|
// spuriously return true even if the user wanted to be looking at earlier
|
||||||
|
// content. So don't call it in render() cycles.
|
||||||
isAtBottom: function() {
|
isAtBottom: function() {
|
||||||
return this.scrollState && this.scrollState.atBottom;
|
var sn = this._getScrollNode();
|
||||||
|
// + 1 here to avoid fractional pixel rounding errors
|
||||||
|
return sn.scrollHeight - sn.scrollTop <= sn.clientHeight + 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
// check the scroll state and send out backfill requests if necessary.
|
// check the scroll state and send out backfill requests if necessary.
|
||||||
|
@ -213,9 +220,7 @@ module.exports = React.createClass({
|
||||||
// attribute. It is this token which is stored as the
|
// attribute. It is this token which is stored as the
|
||||||
// 'lastDisplayedScrollToken'.
|
// 'lastDisplayedScrollToken'.
|
||||||
|
|
||||||
var sn = this._getScrollNode();
|
var atBottom = this.isAtBottom();
|
||||||
// + 1 here to avoid fractional pixel rounding errors
|
|
||||||
var atBottom = sn.scrollHeight - sn.scrollTop <= sn.clientHeight + 1;
|
|
||||||
|
|
||||||
var itemlist = this.refs.itemlist;
|
var itemlist = this.refs.itemlist;
|
||||||
var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();
|
var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();
|
||||||
|
|
Loading…
Reference in New Issue