Skip to content

Commit 3d266cb

Browse files
committed
Register Mac electron specific Cmd+, shortcut to User Settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
1 parent 775e1fc commit 3d266cb

3 files changed

Lines changed: 27 additions & 3 deletions

File tree

electron_app/src/vectormenu.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ const template = [
4040
{ role: 'zoomin', accelerator: 'CommandOrControl+=' },
4141
{ role: 'zoomout' },
4242
{ type: 'separator' },
43+
{
44+
label: 'Preferences',
45+
accelerator: 'Command+,', // Mac-only accelerator
46+
click() { global.mainWindow.webContents.send('preferences'); },
47+
},
4348
{ role: 'togglefullscreen' },
4449
{ role: 'toggledevtools' },
4550
],

src/i18n/strings/en_EN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.",
77
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
88
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.",
9+
"Open user settings": "Open user settings",
910
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
1011
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
1112
"Unknown device": "Unknown device",

src/vector/platform/ElectronPlatform.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,29 @@ limitations under the License.
2323
import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
2424
import BaseEventIndexManager from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
2525
import dis from 'matrix-react-sdk/src/dispatcher';
26-
import { _t } from 'matrix-react-sdk/src/languageHandler';
26+
import { _t, _td } from 'matrix-react-sdk/src/languageHandler';
2727
import * as rageshake from 'matrix-react-sdk/src/rageshake/rageshake';
2828
import {MatrixClient} from "matrix-js-sdk";
2929
import Modal from "matrix-react-sdk/src/Modal";
3030
import InfoDialog from "matrix-react-sdk/src/components/views/dialogs/InfoDialog";
3131
import Spinner from "matrix-react-sdk/src/components/views/elements/Spinner";
32+
import {Categories, Modifiers, registerShortcut} from "matrix-react-sdk/src/accessibility/KeyboardShortcuts";
33+
import {Key} from "matrix-react-sdk/src/Keyboard";
3234
import React from "react";
3335

3436
const ipcRenderer = window.ipcRenderer;
37+
const isMac = navigator.platform.toUpperCase().includes('MAC');
38+
39+
// register Mac specific shortcuts
40+
if (isMac) {
41+
registerShortcut(Categories.NAVIGATION, {
42+
keybinds: [{
43+
modifiers: [Modifiers.COMMAND],
44+
key: Key.COMMA,
45+
}],
46+
description: _td("Open user settings"),
47+
});
48+
}
3549

3650
function platformFriendlyName(): string {
3751
// used to use window.process but the same info is available here
@@ -208,6 +222,10 @@ export default class ElectronPlatform extends VectorBasePlatform {
208222
ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));
209223
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));
210224

225+
ipcRenderer.on('preferences', () => {
226+
dis.dispatch({ action: 'view_user_settings' });
227+
});
228+
211229
this.startUpdateCheck = this.startUpdateCheck.bind(this);
212230
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
213231
}
@@ -301,7 +319,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
301319

302320
supportsAutoHideMenuBar(): boolean {
303321
// This is irelevant on Mac as Menu bars don't live in the app window
304-
return !navigator.platform.toUpperCase().includes('MAC');
322+
return !isMac;
305323
}
306324

307325
async getAutoHideMenuBarEnabled(): boolean {
@@ -314,7 +332,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
314332

315333
supportsMinimizeToTray(): boolean {
316334
// Things other than Mac support tray icons
317-
return !navigator.platform.toUpperCase().includes('MAC');
335+
return !isMac;
318336
}
319337

320338
async getMinimizeToTrayEnabled(): boolean {

0 commit comments

Comments
 (0)