diff --git a/res/css/structures/_FilePanel.scss b/res/css/structures/_FilePanel.scss index 703e90f402..87e885e668 100644 --- a/res/css/structures/_FilePanel.scss +++ b/res/css/structures/_FilePanel.scss @@ -18,6 +18,7 @@ limitations under the License. order: 2; flex: 1 1 0; overflow-y: auto; + display: flex; } .mx_FilePanel .mx_RoomView_messageListWrapper { diff --git a/res/css/structures/_NotificationPanel.scss b/res/css/structures/_NotificationPanel.scss index 78b3522d4e..c9e0261ec9 100644 --- a/res/css/structures/_NotificationPanel.scss +++ b/res/css/structures/_NotificationPanel.scss @@ -18,6 +18,7 @@ limitations under the License. order: 2; flex: 1 1 0; overflow-y: auto; + display: flex; } .mx_NotificationPanel .mx_RoomView_messageListWrapper { diff --git a/src/components/structures/FilePanel.js b/src/components/structures/FilePanel.js index c7e8295f80..f5a5912dd5 100644 --- a/src/components/structures/FilePanel.js +++ b/src/components/structures/FilePanel.js @@ -39,23 +39,10 @@ const FilePanel = createReactClass({ }; }, - componentWillMount: function() { + componentDidMount: function() { this.updateTimelineSet(this.props.roomId); }, - componentWillReceiveProps: function(nextProps) { - if (nextProps.roomId !== this.props.roomId) { - // otherwise we race between re-rendering the TimelinePanel and setting the new timelineSet. - // - // FIXME: this race only happens because of the promise returned by getOrCreateFilter(). - // We should only need to create the containsUrl filter once per login session, so in practice - // it shouldn't be being done here at all. Then we could just update the timelineSet directly - // without resetting it first, and speed up room-change. - this.setState({ timelineSet: null }); - this.updateTimelineSet(nextProps.roomId); - } - }, - updateTimelineSet: function(roomId) { const client = MatrixClientPeg.get(); const room = client.getRoom(roomId); diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index 32efad1e05..1d5c520285 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -759,8 +759,10 @@ module.exports = createReactClass({ _getMessagesHeight() { const itemlist = this.refs.itemlist; const lastNode = itemlist.lastElementChild; + const lastNodeBottom = lastNode ? lastNode.offsetTop + lastNode.clientHeight : 0; + const firstNodeTop = itemlist.firstElementChild ? itemlist.firstElementChild.offsetTop : 0; // 18 is itemlist padding - return (lastNode.offsetTop + lastNode.clientHeight) - itemlist.firstElementChild.offsetTop + (18 * 2); + return lastNodeBottom - firstNodeTop + (18 * 2); }, _topFromBottom(node) {