From 4f06b6de78dc9f24c43aa509a7130ad974b40941 Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 27 Dec 2019 20:28:27 +0100 Subject: [PATCH] fix registration of global shortcuts, fixes #786 --- electron.js | 37 +------------------------------------ src/services/window.js | 41 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/electron.js b/electron.js index 58e2bd387..8296d0435 100644 --- a/electron.js +++ b/electron.js @@ -1,10 +1,7 @@ 'use strict'; const {app, globalShortcut} = require('electron'); -const log = require('./src/services/log'); const sqlInit = require('./src/services/sql_init'); -const cls = require('./src/services/cls'); -const keyboardActionsService = require('./src/services/keyboard_actions'); const appIconService = require('./src/services/app_icon'); const windowService = require('./src/services/window'); @@ -24,38 +21,6 @@ app.on('window-all-closed', () => { } }); -async function registerGlobalShortcuts() { - await sqlInit.dbReady; - - const allActions = await keyboardActionsService.getKeyboardActions(); - - for (const action of allActions) { - if (!action.effectiveShortcuts) { - continue; - } - - for (const shortcut of action.effectiveShortcuts) { - if (shortcut.startsWith('global:')) { - const translatedShortcut = shortcut.substr(7); - - const result = globalShortcut.register(translatedShortcut, cls.wrap(async () => { - // window may be hidden / not in focus - mainWindow.focus(); - - mainWindow.webContents.send('globalShortcut', action.actionName); - })); - - if (result) { - log.info(`Registered global shortcut ${translatedShortcut} for action ${action.actionName}`); - } - else { - log.info(`Could not register global shortcut ${translatedShortcut}`); - } - } - } - } -} - app.on('ready', async () => { app.setAppUserModelId('com.github.zadam.trilium'); @@ -72,7 +37,7 @@ app.on('ready', async () => { await windowService.createSetupWindow(); } - await registerGlobalShortcuts(); + await windowService.registerGlobalShortcuts(); }); app.on('will-quit', () => { diff --git a/src/services/window.js b/src/services/window.js index 379dd9f9a..428cec5f2 100644 --- a/src/services/window.js +++ b/src/services/window.js @@ -3,6 +3,10 @@ const url = require("url"); const port = require('./port'); const optionService = require('./options'); const env = require('./env'); +const log = require('./log'); +const sqlInit = require('./sql_init'); +const cls = require('./cls'); +const keyboardActionsService = require('./keyboard_actions'); // Prevent window being garbage collected /** @type {Electron.BrowserWindow} */ @@ -85,8 +89,43 @@ function closeSetupWindow() { } } +async function registerGlobalShortcuts() { + const {globalShortcut} = require('electron'); + + await sqlInit.dbReady; + + const allActions = await keyboardActionsService.getKeyboardActions(); + + for (const action of allActions) { + if (!action.effectiveShortcuts) { + continue; + } + + for (const shortcut of action.effectiveShortcuts) { + if (shortcut.startsWith('global:')) { + const translatedShortcut = shortcut.substr(7); + + const result = globalShortcut.register(translatedShortcut, cls.wrap(async () => { + // window may be hidden / not in focus + mainWindow.focus(); + + mainWindow.webContents.send('globalShortcut', action.actionName); + })); + + if (result) { + log.info(`Registered global shortcut ${translatedShortcut} for action ${action.actionName}`); + } + else { + log.info(`Could not register global shortcut ${translatedShortcut}`); + } + } + } + } +} + module.exports = { createMainWindow, createSetupWindow, - closeSetupWindow + closeSetupWindow, + registerGlobalShortcuts }; \ No newline at end of file