Don't forceUpdate the message panel on resize

We don't really need to forceUpdate() the entire timeline panel every time
something might resize it. It is sufficient to forceUpdate the ScrollPanel.
pull/21833/head
Richard van der Hoff 2016-03-08 12:15:02 +00:00
parent f41c0d9bbf
commit b45c256427
3 changed files with 20 additions and 1 deletions

View File

@ -159,6 +159,18 @@ module.exports = React.createClass({
} }
}, },
// makes the MessagePanel update itself after it is resized (due to other
// changes in the DOM)
onResize: function() {
if (!this.refs.scrollPanel) { return; }
// we don't need to forceUpdate ourselves here, but we do need to
// forceUpdate the scrollpanel, which will make the gemini panel update
// itself and trigger a scroll position check.
console.log("MessagePanel.onResize");
this.refs.scrollPanel.forceUpdate();
},
_getEventTiles: function() { _getEventTiles: function() {
var EventTile = sdk.getComponent('rooms.EventTile'); var EventTile = sdk.getComponent('rooms.EventTile');

View File

@ -1028,7 +1028,7 @@ module.exports = React.createClass({
// telling it about it. This also ensures that the scroll offset is // telling it about it. This also ensures that the scroll offset is
// updated. // updated.
if (this.refs.messagePanel) { if (this.refs.messagePanel) {
this.refs.messagePanel.forceUpdate(); this.refs.messagePanel.onResize();
} }
}, },

View File

@ -467,6 +467,13 @@ var TimelinePanel = React.createClass({
return null; return null;
}, },
// makes the TimelinePanel update itself after it is resized (due to other
// changes in the DOM)
onResize: function() {
if (!this.refs.messagePanel) { return; }
this.refs.messagePanel.onResize();
},
_initTimeline: function(props) { _initTimeline: function(props) {
var initialEvent = props.eventId; var initialEvent = props.eventId;
var pixelOffset = props.eventPixelOffset; var pixelOffset = props.eventPixelOffset;