aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-08-15 20:27:45 +0530
committerLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-08-15 15:13:35 +0000
commit59e503fdc61802bd9f9fac2c030c2192bd95c4ce (patch)
treeb19096beb9125baf9a3ed14e3197908a190eb308 /src/lib
parentDowngraded 'sqlite3' back to '5.0.0' since it doesn't compile on macos (in de... (diff)
downloadferdium-app-59e503fdc61802bd9f9fac2c030c2192bd95c4ce.tar.gz
ferdium-app-59e503fdc61802bd9f9fac2c030c2192bd95c4ce.tar.zst
ferdium-app-59e503fdc61802bd9f9fac2c030c2192bd95c4ce.zip
fix: Fix issue with shortcut accelerators not working on macos where symbols were used for shift/alt keys
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Menu.js72
1 files changed, 36 insertions, 36 deletions
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 86ac5ec9b..5a99299c5 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -4,7 +4,7 @@ import { autorun, observable } from 'mobx';
4import { defineMessages } from 'react-intl'; 4import { defineMessages } from 'react-intl';
5import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDI_URL, LIVE_API_FERDI_WEBSITE } from '../config'; 5import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDI_URL, LIVE_API_FERDI_WEBSITE } from '../config';
6import { 6import {
7 shortcutKey, altKey, shiftKey, settingsShortcutKey, isLinux, isMac, aboutAppDetails, lockFerdiShortcutKey, todosToggleShortcutKey, workspaceToggleShortcutKey, addNewServiceShortcutKey, muteFerdiShortcutKey, 7 cmdOrCtrlShortcutKey, altKey, shiftKey, settingsShortcutKey, isLinux, isMac, aboutAppDetails, lockFerdiShortcutKey, todosToggleShortcutKey, workspaceToggleShortcutKey, addNewServiceShortcutKey, muteFerdiShortcutKey,
8} from '../environment'; 8} from '../environment';
9import { announcementsStore } from '../features/announcements'; 9import { announcementsStore } from '../features/announcements';
10import { announcementActions } from '../features/announcements/actions'; 10import { announcementActions } from '../features/announcements/actions';
@@ -317,7 +317,7 @@ function getActiveWebview() {
317const _titleBarTemplateFactory = (intl, locked) => [ 317const _titleBarTemplateFactory = (intl, locked) => [
318 { 318 {
319 label: intl.formatMessage(menuItems.edit), 319 label: intl.formatMessage(menuItems.edit),
320 accelerator: `${altKey}+E`, 320 accelerator: `${altKey()}+E`,
321 submenu: [ 321 submenu: [
322 { 322 {
323 label: intl.formatMessage(menuItems.undo), 323 label: intl.formatMessage(menuItems.undo),
@@ -332,22 +332,22 @@ const _titleBarTemplateFactory = (intl, locked) => [
332 }, 332 },
333 { 333 {
334 label: intl.formatMessage(menuItems.cut), 334 label: intl.formatMessage(menuItems.cut),
335 accelerator: `${shortcutKey()}+X`, 335 accelerator: `${cmdOrCtrlShortcutKey()}+X`,
336 role: 'cut', 336 role: 'cut',
337 }, 337 },
338 { 338 {
339 label: intl.formatMessage(menuItems.copy), 339 label: intl.formatMessage(menuItems.copy),
340 accelerator: `${shortcutKey()}+C`, 340 accelerator: `${cmdOrCtrlShortcutKey()}+C`,
341 role: 'copy', 341 role: 'copy',
342 }, 342 },
343 { 343 {
344 label: intl.formatMessage(menuItems.paste), 344 label: intl.formatMessage(menuItems.paste),
345 accelerator: `${shortcutKey()}+V`, 345 accelerator: `${cmdOrCtrlShortcutKey()}+V`,
346 role: 'paste', 346 role: 'paste',
347 }, 347 },
348 { 348 {
349 label: intl.formatMessage(menuItems.pasteAndMatchStyle), 349 label: intl.formatMessage(menuItems.pasteAndMatchStyle),
350 accelerator: `${shortcutKey()}+${shiftKey}+V`, // Override the accelerator since this adds new key combo in macos 350 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+V`, // Override the accelerator since this adds new key combo in macos
351 role: 'pasteAndMatchStyle', 351 role: 'pasteAndMatchStyle',
352 click() { 352 click() {
353 getActiveWebview().pasteAndMatchStyle(); 353 getActiveWebview().pasteAndMatchStyle();
@@ -359,14 +359,14 @@ const _titleBarTemplateFactory = (intl, locked) => [
359 }, 359 },
360 { 360 {
361 label: intl.formatMessage(menuItems.selectAll), 361 label: intl.formatMessage(menuItems.selectAll),
362 accelerator: `${shortcutKey()}+A`, 362 accelerator: `${cmdOrCtrlShortcutKey()}+A`,
363 role: 'selectall', 363 role: 'selectall',
364 }, 364 },
365 ], 365 ],
366 }, 366 },
367 { 367 {
368 label: intl.formatMessage(menuItems.view), 368 label: intl.formatMessage(menuItems.view),
369 accelerator: `${altKey}+V`, 369 accelerator: `${altKey()}+V`,
370 visible: !locked, 370 visible: !locked,
371 submenu: [ 371 submenu: [
372 { 372 {
@@ -374,7 +374,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
374 }, 374 },
375 { 375 {
376 label: intl.formatMessage(menuItems.openQuickSwitch), 376 label: intl.formatMessage(menuItems.openQuickSwitch),
377 accelerator: `${shortcutKey()}+S`, 377 accelerator: `${cmdOrCtrlShortcutKey()}+S`,
378 click() { 378 click() {
379 window.ferdi.features.quickSwitch.state.isModalVisible = true; 379 window.ferdi.features.quickSwitch.state.isModalVisible = true;
380 }, 380 },
@@ -384,7 +384,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
384 }, 384 },
385 { 385 {
386 label: intl.formatMessage(menuItems.findInPage), 386 label: intl.formatMessage(menuItems.findInPage),
387 accelerator: `${shortcutKey()}+F`, 387 accelerator: `${cmdOrCtrlShortcutKey()}+F`,
388 click() { 388 click() {
389 // Check if there is a service active 389 // Check if there is a service active
390 if (!window.ferdi.stores.services.active) return; 390 if (!window.ferdi.stores.services.active) return;
@@ -405,14 +405,14 @@ const _titleBarTemplateFactory = (intl, locked) => [
405 }, 405 },
406 { 406 {
407 label: intl.formatMessage(menuItems.back), 407 label: intl.formatMessage(menuItems.back),
408 accelerator: `${shortcutKey()}+Left`, 408 accelerator: `${cmdOrCtrlShortcutKey()}+Left`,
409 click() { 409 click() {
410 getActiveWebview().goBack(); 410 getActiveWebview().goBack();
411 }, 411 },
412 }, 412 },
413 { 413 {
414 label: intl.formatMessage(menuItems.forward), 414 label: intl.formatMessage(menuItems.forward),
415 accelerator: `${shortcutKey()}+Right`, 415 accelerator: `${cmdOrCtrlShortcutKey()}+Right`,
416 click() { 416 click() {
417 getActiveWebview().goForward(); 417 getActiveWebview().goForward();
418 }, 418 },
@@ -422,7 +422,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
422 }, 422 },
423 { 423 {
424 label: intl.formatMessage(menuItems.resetZoom), 424 label: intl.formatMessage(menuItems.resetZoom),
425 accelerator: `${shortcutKey()}+0`, 425 accelerator: `${cmdOrCtrlShortcutKey()}+0`,
426 role: 'resetZoom', 426 role: 'resetZoom',
427 click() { 427 click() {
428 getActiveWebview().setZoomLevel(0); 428 getActiveWebview().setZoomLevel(0);
@@ -430,7 +430,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
430 }, 430 },
431 { 431 {
432 label: intl.formatMessage(menuItems.zoomIn), 432 label: intl.formatMessage(menuItems.zoomIn),
433 accelerator: `${shortcutKey()}+plus`, 433 accelerator: `${cmdOrCtrlShortcutKey()}+plus`,
434 role: 'zoomIn', 434 role: 'zoomIn',
435 click() { 435 click() {
436 const activeService = getActiveWebview(); 436 const activeService = getActiveWebview();
@@ -442,7 +442,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
442 }, 442 },
443 { 443 {
444 label: intl.formatMessage(menuItems.zoomOut), 444 label: intl.formatMessage(menuItems.zoomOut),
445 accelerator: `${shortcutKey()}+-`, 445 accelerator: `${cmdOrCtrlShortcutKey()}+-`,
446 role: 'zoomOut', 446 role: 'zoomOut',
447 click() { 447 click() {
448 const activeService = getActiveWebview(); 448 const activeService = getActiveWebview();
@@ -462,7 +462,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
462 { 462 {
463 label: intl.formatMessage(menuItems.toggleDarkMode), 463 label: intl.formatMessage(menuItems.toggleDarkMode),
464 type: 'checkbox', 464 type: 'checkbox',
465 accelerator: `${shortcutKey()}+${shiftKey}+D`, 465 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+D`,
466 checked: window.ferdi.stores.settings.app.darkMode, 466 checked: window.ferdi.stores.settings.app.darkMode,
467 click: () => { 467 click: () => {
468 window.ferdi.actions.settings.update({ 468 window.ferdi.actions.settings.update({
@@ -477,13 +477,13 @@ const _titleBarTemplateFactory = (intl, locked) => [
477 }, 477 },
478 { 478 {
479 label: intl.formatMessage(menuItems.services), 479 label: intl.formatMessage(menuItems.services),
480 accelerator: `${altKey}+S`, 480 accelerator: `${altKey()}+S`,
481 visible: !locked, 481 visible: !locked,
482 submenu: [], 482 submenu: [],
483 }, 483 },
484 { 484 {
485 label: intl.formatMessage(menuItems.workspaces), 485 label: intl.formatMessage(menuItems.workspaces),
486 accelerator: `${altKey}+W`, 486 accelerator: `${altKey()}+W`,
487 submenu: [], 487 submenu: [],
488 visible: !locked && workspaceStore.isFeatureEnabled, 488 visible: !locked && workspaceStore.isFeatureEnabled,
489 }, 489 },
@@ -508,7 +508,7 @@ const _titleBarTemplateFactory = (intl, locked) => [
508 }, 508 },
509 { 509 {
510 label: intl.formatMessage(menuItems.help), 510 label: intl.formatMessage(menuItems.help),
511 accelerator: `${altKey}+H`, 511 accelerator: `${altKey()}+H`,
512 role: 'help', 512 role: 'help',
513 submenu: [ 513 submenu: [
514 { 514 {
@@ -611,13 +611,13 @@ export default class FranzMenu {
611 type: 'separator', 611 type: 'separator',
612 }, { 612 }, {
613 label: intl.formatMessage(menuItems.toggleDevTools), 613 label: intl.formatMessage(menuItems.toggleDevTools),
614 accelerator: `${shortcutKey()}+${altKey}+I`, 614 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+I`,
615 click: (menuItem, browserWindow) => { 615 click: (menuItem, browserWindow) => {
616 browserWindow.webContents.toggleDevTools(); 616 browserWindow.webContents.toggleDevTools();
617 }, 617 },
618 }, { 618 }, {
619 label: intl.formatMessage(menuItems.toggleServiceDevTools), 619 label: intl.formatMessage(menuItems.toggleServiceDevTools),
620 accelerator: `${shortcutKey()}+${shiftKey}+${altKey}+I`, 620 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+I`,
621 click: () => { 621 click: () => {
622 this.actions.service.openDevToolsForActiveService(); 622 this.actions.service.openDevToolsForActiveService();
623 }, 623 },
@@ -627,7 +627,7 @@ export default class FranzMenu {
627 if (this.stores.features.features.isTodosEnabled) { 627 if (this.stores.features.features.isTodosEnabled) {
628 tpl[1].submenu.push({ 628 tpl[1].submenu.push({
629 label: intl.formatMessage(menuItems.toggleTodosDevTools), 629 label: intl.formatMessage(menuItems.toggleTodosDevTools),
630 accelerator: `${shortcutKey()}+${shiftKey}+${altKey}+O`, 630 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+O`,
631 click: () => { 631 click: () => {
632 const webview = document.querySelector('#todos-panel webview'); 632 const webview = document.querySelector('#todos-panel webview');
633 if (webview) this.actions.todos.openDevTools(); 633 if (webview) this.actions.todos.openDevTools();
@@ -638,7 +638,7 @@ export default class FranzMenu {
638 tpl[1].submenu.unshift({ 638 tpl[1].submenu.unshift({
639 label: intl.formatMessage(menuItems.reloadService), 639 label: intl.formatMessage(menuItems.reloadService),
640 id: 'reloadService', // TODO: needed? 640 id: 'reloadService', // TODO: needed?
641 accelerator: `${shortcutKey()}+R`, 641 accelerator: `${cmdOrCtrlShortcutKey()}+R`,
642 click: () => { 642 click: () => {
643 if (this.stores.user.isLoggedIn 643 if (this.stores.user.isLoggedIn
644 && this.stores.services.enabled.length > 0) { 644 && this.stores.services.enabled.length > 0) {
@@ -653,13 +653,13 @@ export default class FranzMenu {
653 }, 653 },
654 }, { 654 }, {
655 label: intl.formatMessage(menuItems.reloadFerdi), 655 label: intl.formatMessage(menuItems.reloadFerdi),
656 accelerator: `${shortcutKey()}+${shiftKey}+R`, 656 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+R`,
657 click: () => { 657 click: () => {
658 window.location.reload(); 658 window.location.reload();
659 }, 659 },
660 }, { 660 }, {
661 label: intl.formatMessage(menuItems.reloadTodos), 661 label: intl.formatMessage(menuItems.reloadTodos),
662 accelerator: `${shortcutKey()}+${shiftKey}+${altKey}+R`, 662 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+R`,
663 click: () => { 663 click: () => {
664 this.actions.todos.reload(); 664 this.actions.todos.reload();
665 }, 665 },
@@ -715,7 +715,7 @@ export default class FranzMenu {
715 715
716 tpl.unshift({ 716 tpl.unshift({
717 label: isMac ? app.name : intl.formatMessage(menuItems.file), 717 label: isMac ? app.name : intl.formatMessage(menuItems.file),
718 accelerator: `${altKey}+F`, 718 accelerator: `${altKey()}+F`,
719 submenu: [ 719 submenu: [
720 { 720 {
721 label: intl.formatMessage(menuItems.about), 721 label: intl.formatMessage(menuItems.about),
@@ -831,7 +831,7 @@ export default class FranzMenu {
831 { 831 {
832 label: intl.formatMessage(menuItems.quit), 832 label: intl.formatMessage(menuItems.quit),
833 role: 'quit', 833 role: 'quit',
834 accelerator: `${shortcutKey()}+Q`, 834 accelerator: `${cmdOrCtrlShortcutKey()}+Q`,
835 click() { 835 click() {
836 app.quit(); 836 app.quit();
837 }, 837 },
@@ -882,22 +882,22 @@ export default class FranzMenu {
882 type: 'separator', 882 type: 'separator',
883 }, { 883 }, {
884 label: intl.formatMessage(menuItems.activateNextService), 884 label: intl.formatMessage(menuItems.activateNextService),
885 accelerator: `${shortcutKey()}+tab`, 885 accelerator: `${cmdOrCtrlShortcutKey()}+tab`,
886 click: () => this.actions.service.setActiveNext(), 886 click: () => this.actions.service.setActiveNext(),
887 visible: !cmdAltShortcutsVisibile, 887 visible: !cmdAltShortcutsVisibile,
888 }, { 888 }, {
889 label: intl.formatMessage(menuItems.activateNextService), 889 label: intl.formatMessage(menuItems.activateNextService),
890 accelerator: `${shortcutKey()}+${altKey}+right`, 890 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+right`,
891 click: () => this.actions.service.setActiveNext(), 891 click: () => this.actions.service.setActiveNext(),
892 visible: cmdAltShortcutsVisibile, 892 visible: cmdAltShortcutsVisibile,
893 }, { 893 }, {
894 label: intl.formatMessage(menuItems.activatePreviousService), 894 label: intl.formatMessage(menuItems.activatePreviousService),
895 accelerator: `${shortcutKey()}+${shiftKey}+tab`, 895 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+tab`,
896 click: () => this.actions.service.setActivePrev(), 896 click: () => this.actions.service.setActivePrev(),
897 visible: !cmdAltShortcutsVisibile, 897 visible: !cmdAltShortcutsVisibile,
898 }, { 898 }, {
899 label: intl.formatMessage(menuItems.activatePreviousService), 899 label: intl.formatMessage(menuItems.activatePreviousService),
900 accelerator: `${shortcutKey()}+${altKey}+left`, 900 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+left`,
901 click: () => this.actions.service.setActivePrev(), 901 click: () => this.actions.service.setActivePrev(),
902 visible: cmdAltShortcutsVisibile, 902 visible: cmdAltShortcutsVisibile,
903 }, { 903 }, {
@@ -912,7 +912,7 @@ export default class FranzMenu {
912 912
913 services.allDisplayed.forEach((service, i) => (menu.push({ 913 services.allDisplayed.forEach((service, i) => (menu.push({
914 label: this._getServiceName(service), 914 label: this._getServiceName(service),
915 accelerator: i < 9 ? `${shortcutKey()}+${i + 1}` : null, 915 accelerator: i < 9 ? `${cmdOrCtrlShortcutKey()}+${i + 1}` : null,
916 type: 'radio', 916 type: 'radio',
917 checked: service.isActive, 917 checked: service.isActive,
918 click: () => { 918 click: () => {
@@ -929,7 +929,7 @@ export default class FranzMenu {
929 type: 'separator', 929 type: 'separator',
930 }, { 930 }, {
931 label: intl.formatMessage(menuItems.serviceGoHome), 931 label: intl.formatMessage(menuItems.serviceGoHome),
932 accelerator: `${shortcutKey()}+${shiftKey}+H`, 932 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+H`,
933 click: () => this.actions.service.reloadActive(), 933 click: () => this.actions.service.reloadActive(),
934 }); 934 });
935 } 935 }
@@ -945,7 +945,7 @@ export default class FranzMenu {
945 // Add new workspace item: 945 // Add new workspace item:
946 menu.push({ 946 menu.push({
947 label: intl.formatMessage(menuItems.addNewWorkspace), 947 label: intl.formatMessage(menuItems.addNewWorkspace),
948 accelerator: `${shortcutKey()}+${shiftKey}+N`, 948 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+N`,
949 click: () => { 949 click: () => {
950 workspaceActions.openWorkspaceSettings(); 950 workspaceActions.openWorkspaceSettings();
951 }, 951 },
@@ -974,7 +974,7 @@ export default class FranzMenu {
974 // Default workspace 974 // Default workspace
975 menu.push({ 975 menu.push({
976 label: intl.formatMessage(menuItems.defaultWorkspace), 976 label: intl.formatMessage(menuItems.defaultWorkspace),
977 accelerator: `${shortcutKey()}+${altKey}+0`, 977 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+0`,
978 type: 'radio', 978 type: 'radio',
979 checked: !activeWorkspace, 979 checked: !activeWorkspace,
980 click: () => { 980 click: () => {
@@ -985,7 +985,7 @@ export default class FranzMenu {
985 // Workspace items 985 // Workspace items
986 workspaces.forEach((workspace, i) => menu.push({ 986 workspaces.forEach((workspace, i) => menu.push({
987 label: workspace.name, 987 label: workspace.name,
988 accelerator: i < 9 ? `${shortcutKey()}+${altKey}+${i + 1}` : null, 988 accelerator: i < 9 ? `${cmdOrCtrlShortcutKey()}+${altKey()}+${i + 1}` : null,
989 type: 'radio', 989 type: 'radio',
990 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false, 990 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false,
991 click: () => { 991 click: () => {