This repository was archived by the owner on Sep 11, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +19
-4
lines changed Expand file tree Collapse file tree 5 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -29,9 +29,10 @@ import EditorStateTransfer from '../../../utils/EditorStateTransfer';
2929import classNames from 'classnames' ;
3030import { EventStatus } from 'matrix-js-sdk' ;
3131import BasicMessageComposer from "./BasicMessageComposer" ;
32- import { Key } from "../../../Keyboard" ;
32+ import { Key , isOnlyCtrlOrCmdKeyEvent } from "../../../Keyboard" ;
3333import MatrixClientContext from "../../../contexts/MatrixClientContext" ;
3434import { Action } from "../../../dispatcher/actions" ;
35+ import SettingsStore from "../../../settings/SettingsStore" ;
3536
3637function _isReply ( mxEvent ) {
3738 const relatesTo = mxEvent . getContent ( ) [ "m.relates_to" ] ;
@@ -135,7 +136,10 @@ export default class EditMessageComposer extends React.Component {
135136 if ( event . metaKey || event . altKey || event . shiftKey ) {
136137 return ;
137138 }
138- if ( event . key === Key . ENTER ) {
139+ const ctrlEnterToSend = ! ! SettingsStore . getValue ( 'MessageComposerInput.ctrlEnterToSend' ) ;
140+ const send = ctrlEnterToSend ? event . key === Key . ENTER && isOnlyCtrlOrCmdKeyEvent ( event )
141+ : event . key === Key . ENTER ;
142+ if ( send ) {
139143 this . _sendEdit ( ) ;
140144 event . preventDefault ( ) ;
141145 } else if ( event . key === Key . ESCAPE ) {
Original file line number Diff line number Diff line change @@ -39,11 +39,12 @@ import * as sdk from '../../../index';
3939import Modal from '../../../Modal' ;
4040import { _t , _td } from '../../../languageHandler' ;
4141import ContentMessages from '../../../ContentMessages' ;
42- import { Key } from "../../../Keyboard" ;
42+ import { Key , isOnlyCtrlOrCmdKeyEvent } from "../../../Keyboard" ;
4343import MatrixClientContext from "../../../contexts/MatrixClientContext" ;
4444import { MatrixClientPeg } from "../../../MatrixClientPeg" ;
4545import RateLimitedFunc from '../../../ratelimitedfunc' ;
4646import { Action } from "../../../dispatcher/actions" ;
47+ import SettingsStore from "../../../settings/SettingsStore" ;
4748
4849function addReplyToMessageContent ( content , repliedToEvent , permalinkCreator ) {
4950 const replyContent = ReplyThread . makeReplyMixIn ( repliedToEvent ) ;
@@ -122,7 +123,10 @@ export default class SendMessageComposer extends React.Component {
122123 return ;
123124 }
124125 const hasModifier = event . altKey || event . ctrlKey || event . metaKey || event . shiftKey ;
125- if ( event . key === Key . ENTER && ! hasModifier ) {
126+ const ctrlEnterToSend = ! ! SettingsStore . getValue ( 'MessageComposerInput.ctrlEnterToSend' ) ;
127+ const send = ctrlEnterToSend ? event . key === Key . ENTER && isOnlyCtrlOrCmdKeyEvent ( event )
128+ : event . key === Key . ENTER && ! hasModifier ;
129+ if ( send ) {
126130 this . _sendMessage ( ) ;
127131 event . preventDefault ( ) ;
128132 } else if ( event . key === Key . ARROW_UP ) {
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ export default class PreferencesUserSettingsTab extends React.Component {
3333 'MessageComposerInput.autoReplaceEmoji' ,
3434 'MessageComposerInput.suggestEmoji' ,
3535 'sendTypingNotifications' ,
36+ 'MessageComposerInput.ctrlEnterToSend' ,
3637 ] ;
3738
3839 static TIMELINE_SETTINGS = [
Original file line number Diff line number Diff line change 477477 "Enable big emoji in chat" : " Enable big emoji in chat" ,
478478 "Send typing notifications" : " Send typing notifications" ,
479479 "Show typing notifications" : " Show typing notifications" ,
480+ "Use Ctrl + Enter to send a message (Mac: Command + Enter)" : " Use Ctrl + Enter to send a message (Mac: Command + Enter)" ,
480481 "Automatically replace plain text Emoji" : " Automatically replace plain text Emoji" ,
481482 "Mirror local video feed" : " Mirror local video feed" ,
482483 "Enable Community Filter Panel" : " Enable Community Filter Panel" ,
Original file line number Diff line number Diff line change @@ -321,6 +321,11 @@ export const SETTINGS: {[setting: string]: ISetting} = {
321321 displayName : _td ( "Show typing notifications" ) ,
322322 default : true ,
323323 } ,
324+ "MessageComposerInput.ctrlEnterToSend" : {
325+ supportedLevels : LEVELS_ACCOUNT_SETTINGS ,
326+ displayName : _td ( "Use Ctrl + Enter to send a message (Mac: Command + Enter)" ) ,
327+ default : false ,
328+ } ,
324329 "MessageComposerInput.autoReplaceEmoji" : {
325330 supportedLevels : LEVELS_ACCOUNT_SETTINGS ,
326331 displayName : _td ( 'Automatically replace plain text Emoji' ) ,
You can’t perform that action at this time.
0 commit comments