diff --git a/electron.js b/electron.js index a6c4e5c14b..52f9ba1831 100644 --- a/electron.js +++ b/electron.js @@ -88,13 +88,6 @@ nativeTheme.on('updated', () => { }); function createWindow () { - ipcMain.handle('Api', (e, cmd, args) => { - args = args || []; - args.unshift(e.sender); - - Api[cmd].apply(Api, args); - }); - mainWindow = WindowManager.createMain({ route: Util.getRouteFromUrl(deeplinkingUrl), isChild: false }); if (process.env.ELECTRON_DEV_EXTENSIONS) { @@ -130,6 +123,18 @@ function createWindow () { MenuManager.setWindow(mainWindow); MenuManager.initMenu(); MenuManager.initTray(); + + ipcMain.handle('Api', (e, cmd, args) => { + args = args || []; + args.unshift(BrowserWindow.fromId(e.sender.id)); + + const Api = require('./electron/js/api.js'); + if (Api[cmd]) { + Api[cmd].apply(Api, args); + } else { + console.error('Api method not defined:', cmd, Api); + }; + }); }; app.on('ready', () => { diff --git a/electron/js/preload.js b/electron/js/preload.js index 614c3c8965..b769aed191 100644 --- a/electron/js/preload.js +++ b/electron/js/preload.js @@ -23,7 +23,7 @@ contextBridge.exposeInMainWorld('Electron', { tmpPath: path.join(userPath, 'tmp'), getPath: (fp, fn) => path.join(fp, fn), - isMaximized: () => BrowserWindow.getFocusedWindow().isMaximized(), + isMaximized: () => BrowserWindow.getFocusedWindow()?.isMaximized(), getGlobal: (key) => getGlobal(key), showOpenDialog: dialog.showOpenDialog, @@ -31,7 +31,7 @@ contextBridge.exposeInMainWorld('Electron', { readChunk, fileType, - on: ipcRenderer.on, - removeAllListeners: ipcRenderer.removeAllListeners, + on: (event, callBack) => ipcRenderer.on(event, callBack), + removeAllListeners: (event) => ipcRenderer.removeAllListeners(event), Api: (cmd, args) => ipcRenderer.invoke('Api', cmd, args), }); \ No newline at end of file diff --git a/src/scss/component/editor.scss b/src/scss/component/editor.scss index 69b0b4392e..017449f08d 100644 --- a/src/scss/component/editor.scss +++ b/src/scss/component/editor.scss @@ -116,6 +116,10 @@ .controlButtons { left: 114px !important; text-align: left !important; } } +.editorWrapper.isNote { + .editorControls { margin-bottom: 16px; } +} + /* Human */ .editorWrapper.isHuman.withIcon { diff --git a/src/ts/component/editor/page.tsx b/src/ts/component/editor/page.tsx index f714b49de7..58e9671687 100644 --- a/src/ts/component/editor/page.tsx +++ b/src/ts/component/editor/page.tsx @@ -173,7 +173,7 @@ const EditorPage = observer(class EditorPage extends React.Component Storage.set('askSurvey', 1); - Renderer.removeAllListeners('commandEditor'); + Renderer.remove('commandEditor'); Renderer.on('commandEditor', (e: any, cmd: string, arg: any) => { this.onCommand(cmd, arg); }); }; @@ -202,7 +202,7 @@ const EditorPage = observer(class EditorPage extends React.Component focus.clear(false); window.clearInterval(this.timeoutScreen); - Renderer.removeAllListeners('commandEditor'); + Renderer.remove('commandEditor'); }; getWrapper () { diff --git a/src/ts/lib/keyboard.tsx b/src/ts/lib/keyboard.tsx index e04f025e84..d7a2430ffc 100644 --- a/src/ts/lib/keyboard.tsx +++ b/src/ts/lib/keyboard.tsx @@ -52,7 +52,7 @@ class Keyboard { Util.previewHide(true); }); - Renderer.removeAllListeners('commandGlobal'); + Renderer.remove('commandGlobal'); Renderer.on('commandGlobal', (e: any, cmd: string, arg: any) => { this.onCommand(cmd, arg); }); }; diff --git a/src/ts/lib/renderer.tsx b/src/ts/lib/renderer.tsx index 805038bcf1..e6df108610 100644 --- a/src/ts/lib/renderer.tsx +++ b/src/ts/lib/renderer.tsx @@ -1,15 +1,21 @@ class Renderer { send (...args: any[]) { - window.Electron.Api(args); + args = args || []; + + const cmd = args[0]; + args.shift(); + + window.Electron.Api(cmd, args); }; on (event: string, callBack: any) { + this.remove(event); window.Electron.on(event, callBack); }; - removeAllListeners (...args: any[]) { - window.Electron.removeAllListeners.apply(null, args); + remove (event: string) { + window.Electron.removeAllListeners(event); }; };