diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 7dc2d57ff0..b6cc7722ee 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1912,6 +1912,7 @@ export default createReactClass({ disabled={this.props.disabled} showApps={this.state.showApps} e2eStatus={this.state.e2eStatus} + resizeNotifier={this.props.resizeNotifier} permalinkCreator={this._getPermalinkCreatorForRoom(this.state.room)} />; } diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index bf4700ed97..00a02cf087 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -354,6 +354,7 @@ export default class MessageComposer extends React.Component { key="controls_input" room={this.props.room} placeholder={this.renderPlaceholderText()} + resizeNotifier={this.props.resizeNotifier} permalinkCreator={this.props.permalinkCreator} />, , , diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 57927af4d0..d25eb52fb0 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -365,6 +365,13 @@ export default class SendMessageComposer extends React.Component { onAction = (payload) => { switch (payload.action) { case 'reply_to_event': + // add a timeout for the reply preview to be rendered, so + // that the ScrollPanel listening to the resizeNotifier can + // correctly measure it's new height and scroll down to keep + // at the bottom if it already is + setTimeout(() => { + this.props.resizeNotifier.notifyTimelineHeightChanged(); + }, 100); case Action.FocusComposer: this._editorRef && this._editorRef.focus(); break; diff --git a/src/utils/ResizeNotifier.js b/src/utils/ResizeNotifier.js index f726a43e08..5467716576 100644 --- a/src/utils/ResizeNotifier.js +++ b/src/utils/ResizeNotifier.js @@ -53,6 +53,10 @@ export default class ResizeNotifier extends EventEmitter { this._updateMiddlePanel(); } + notifyTimelineHeightChanged() { + this._updateMiddlePanel(); + } + // can be called in quick succession notifyWindowResized() { // no need to throttle this one,