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 +22
-4
lines changed Expand file tree Collapse file tree 5 files changed +22
-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" ;
3536import CountlyAnalytics from "../../../CountlyAnalytics" ;
3637
3738function _isReply ( mxEvent ) {
@@ -136,7 +137,10 @@ export default class EditMessageComposer extends React.Component {
136137 if ( event . metaKey || event . altKey || event . shiftKey ) {
137138 return ;
138139 }
139- if ( event . key === Key . ENTER ) {
140+ const ctrlEnterToSend = ! ! SettingsStore . getValue ( 'MessageComposerInput.ctrlEnterToSend' ) ;
141+ const send = ctrlEnterToSend ? event . key === Key . ENTER && isOnlyCtrlOrCmdKeyEvent ( event )
142+ : event . key === Key . ENTER ;
143+ if ( send ) {
140144 this . _sendEdit ( ) ;
141145 event . preventDefault ( ) ;
142146 } else if ( event . key === Key . ESCAPE ) {
Original file line number Diff line number Diff line change @@ -38,10 +38,11 @@ import * as sdk from '../../../index';
3838import Modal from '../../../Modal' ;
3939import { _t , _td } from '../../../languageHandler' ;
4040import ContentMessages from '../../../ContentMessages' ;
41- import { Key } from "../../../Keyboard" ;
41+ import { Key , isOnlyCtrlOrCmdKeyEvent } from "../../../Keyboard" ;
4242import MatrixClientContext from "../../../contexts/MatrixClientContext" ;
4343import RateLimitedFunc from '../../../ratelimitedfunc' ;
4444import { Action } from "../../../dispatcher/actions" ;
45+ import SettingsStore from "../../../settings/SettingsStore" ;
4546import CountlyAnalytics from "../../../CountlyAnalytics" ;
4647
4748function addReplyToMessageContent ( content , repliedToEvent , permalinkCreator ) {
@@ -122,7 +123,11 @@ 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
128+ ? event . key === Key . ENTER && isOnlyCtrlOrCmdKeyEvent ( event )
129+ : event . key === Key . ENTER && ! hasModifier ;
130+ if ( send ) {
126131 this . _sendMessage ( ) ;
127132 event . preventDefault ( ) ;
128133 } 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 730730 "Enable big emoji in chat" : " Enable big emoji in chat" ,
731731 "Send typing notifications" : " Send typing notifications" ,
732732 "Show typing notifications" : " Show typing notifications" ,
733+ "Use Command + Enter to send a message" : " Use Command + Enter to send a message" ,
734+ "Use Ctrl + Enter to send a message" : " Use Ctrl + Enter to send a message" ,
733735 "Automatically replace plain text Emoji" : " Automatically replace plain text Emoji" ,
734736 "Mirror local video feed" : " Mirror local video feed" ,
735737 "Enable Community Filter Panel" : " Enable Community Filter Panel" ,
Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ import UseSystemFontController from './controllers/UseSystemFontController';
3232import { SettingLevel } from "./SettingLevel" ;
3333import SettingController from "./controllers/SettingController" ;
3434import { RightPanelPhases } from "../stores/RightPanelStorePhases" ;
35+ import { isMac } from '../Keyboard' ;
3536import UIFeatureController from "./controllers/UIFeatureController" ;
3637import { UIFeature } from "./UIFeature" ;
3738import { OrderedMultiController } from "./controllers/OrderedMultiController" ;
@@ -324,6 +325,11 @@ export const SETTINGS: {[setting: string]: ISetting} = {
324325 displayName : _td ( "Show typing notifications" ) ,
325326 default : true ,
326327 } ,
328+ "MessageComposerInput.ctrlEnterToSend" : {
329+ supportedLevels : LEVELS_ACCOUNT_SETTINGS ,
330+ displayName : isMac ? _td ( "Use Command + Enter to send a message" ) : _td ( "Use Ctrl + Enter to send a message" ) ,
331+ default : false ,
332+ } ,
327333 "MessageComposerInput.autoReplaceEmoji" : {
328334 supportedLevels : LEVELS_ACCOUNT_SETTINGS ,
329335 displayName : _td ( 'Automatically replace plain text Emoji' ) ,
You can’t perform that action at this time.
0 commit comments