diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index 0a708a8edc..f1de103d3b 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -70,6 +70,7 @@ limitations under the License. flex: 1; display: flex; flex-direction: column; + cursor: text; } .mx_MessageComposer_input { diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js index 8034923158..36f4719abb 100644 --- a/src/components/structures/RoomStatusBar.js +++ b/src/components/structures/RoomStatusBar.js @@ -25,6 +25,7 @@ import MatrixClientPeg from '../../MatrixClientPeg'; import MemberAvatar from '../views/avatars/MemberAvatar'; import Resend from '../../Resend'; import * as cryptodevices from '../../cryptodevices'; +import dis from '../../dispatcher'; const STATUS_BAR_HIDDEN = 0; const STATUS_BAR_EXPANDED = 1; @@ -157,10 +158,12 @@ module.exports = React.createClass({ _onResendAllClick: function() { Resend.resendUnsentEvents(this.props.room); + dis.dispatch({action: 'focus_composer'}); }, _onCancelAllClick: function() { Resend.cancelUnsentEvents(this.props.room); + dis.dispatch({action: 'focus_composer'}); }, _onShowDevicesClick: function() { diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 8477176cc2..90a14d72fc 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -157,6 +157,7 @@ export default class MessageComposerInput extends React.Component { this.setDisplayedCompletion = this.setDisplayedCompletion.bind(this); this.onMarkdownToggleClicked = this.onMarkdownToggleClicked.bind(this); this.onTextPasted = this.onTextPasted.bind(this); + this.focusComposer = this.focusComposer.bind(this); const isRichtextEnabled = SettingsStore.getValue('MessageComposerInput.isRichTextEnabled'); @@ -270,13 +271,12 @@ export default class MessageComposerInput extends React.Component { } onAction = (payload) => { - const editor = this.refs.editor; let contentState = this.state.editorState.getCurrentContent(); switch (payload.action) { case 'reply_to_event': case 'focus_composer': - editor.focus(); + this.focusComposer(); break; case 'insert_mention': { // Pretend that we've autocompleted this user because keeping two code @@ -319,7 +319,7 @@ export default class MessageComposerInput extends React.Component { let editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); editorState = EditorState.moveSelectionToEnd(editorState); this.onEditorContentChanged(editorState); - editor.focus(); + this.focusComposer(); } } break; @@ -1155,6 +1155,10 @@ export default class MessageComposerInput extends React.Component { this.handleKeyCommand('toggle-mode'); }; + focusComposer() { + this.refs.editor.focus(); + } + render() { const activeEditorState = this.state.originalEditorState || this.state.editorState; @@ -1179,7 +1183,7 @@ export default class MessageComposerInput extends React.Component { activeEditorState.getCurrentContent().getBlocksAsArray()); return ( -
+