From eb80022991ef793253c34e25600948d91b26ea47 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 23 Jun 2018 16:40:27 +0100 Subject: [PATCH 1/2] focus composer after interacting with e2ee statusbar/udd Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/RoomStatusBar.js | 3 +++ src/cryptodevices.js | 6 ++++++ 2 files changed, 9 insertions(+) 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/cryptodevices.js b/src/cryptodevices.js index c0b7e3da6e..d11aa47cda 100644 --- a/src/cryptodevices.js +++ b/src/cryptodevices.js @@ -16,6 +16,7 @@ limitations under the License. import Resend from './Resend'; import sdk from './index'; +import dis from './dispatcher'; import Modal from './Modal'; import { _t } from './languageHandler'; @@ -65,6 +66,10 @@ export function getUnknownDevicesForRoom(matrixClient, room) { }); } +function focusComposer() { + dis.dispatch({action: 'focus_composer'}); +} + /** * Show the UnknownDeviceDialog for a given room. The dialog will inform the user * that messages they sent to this room have not been sent due to unknown devices @@ -86,6 +91,7 @@ export function showUnknownDeviceDialogForMessages(matrixClient, room) { sendAnywayLabel: _t("Send anyway"), sendLabel: _t("Send"), onSend: onSendClicked, + onFinished: focusComposer, }, 'mx_Dialog_unknownDevice'); }); } From e1ba6949d0d6ce9474ab559828a407120d16e7f1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 23 Jun 2018 16:40:53 +0100 Subject: [PATCH 2/2] expand composer input focus region and apply cursor:text to it Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/rooms/_MessageComposer.scss | 1 + src/components/views/rooms/MessageComposerInput.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) 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/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 ( -