Don't re-sort the room list if the user is hovering over it

Fixes vector-im/riot-web#5624
This commit is contained in:
Travis Ralston 2019-01-03 13:57:20 -07:00
parent 5d3f585c1e
commit 1481dcf9d7

View file

@ -86,6 +86,7 @@ module.exports = React.createClass({
incomingCallTag: null, incomingCallTag: null,
incomingCall: null, incomingCall: null,
selectedTags: [], selectedTags: [],
hover: false,
}; };
}, },
@ -294,6 +295,17 @@ module.exports = React.createClass({
this.forceUpdate(); this.forceUpdate();
}, },
onMouseEnter: function(ev) {
this.setState({hover: true});
},
onMouseLeave: function(ev) {
this.setState({hover: false});
// Refresh the room list just in case the user missed something.
this._delayedRefreshRoomList();
},
_delayedRefreshRoomList: new rate_limited_func(function() { _delayedRefreshRoomList: new rate_limited_func(function() {
this.refreshRoomList(); this.refreshRoomList();
}, 500), }, 500),
@ -346,6 +358,11 @@ module.exports = React.createClass({
}, },
refreshRoomList: function() { refreshRoomList: function() {
if (this.state.hover) {
// Don't re-sort the list if we're hovering over the list
return;
}
// TODO: ideally we'd calculate this once at start, and then maintain // TODO: ideally we'd calculate this once at start, and then maintain
// any changes to it incrementally, updating the appropriate sublists // any changes to it incrementally, updating the appropriate sublists
// as needed. // as needed.
@ -693,7 +710,8 @@ module.exports = React.createClass({
const subListComponents = this._mapSubListProps(subLists); const subListComponents = this._mapSubListProps(subLists);
return ( return (
<div ref={this._collectResizeContainer} className="mx_RoomList"> <div ref={this._collectResizeContainer} className="mx_RoomList"
onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>
{ subListComponents } { subListComponents }
</div> </div>
); );