Merge pull request #78 from matrix-org/rav/fix_unread_messages

Make ScrollPanel.isAtBottom more reliable
pull/21833/head
Richard van der Hoff 2016-01-05 11:18:40 +00:00
commit 7640dd52e3
1 changed files with 9 additions and 4 deletions

View File

@ -120,8 +120,15 @@ module.exports = React.createClass({
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() {
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.
@ -213,9 +220,7 @@ module.exports = React.createClass({
// attribute. It is this token which is stored as the
// 'lastDisplayedScrollToken'.
var sn = this._getScrollNode();
// + 1 here to avoid fractional pixel rounding errors
var atBottom = sn.scrollHeight - sn.scrollTop <= sn.clientHeight + 1;
var atBottom = this.isAtBottom();
var itemlist = this.refs.itemlist;
var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();