右クリックメニュー(ContextMenu)カスタム処理をmain-processへ移動した。
electron 12へ移行するための対応の一部。
(移行作業としてはelectron11で移行作業をしてから12にアップデートするつもり)。
``` エラーメッセージ
Uncaught ReferenceError: Menu is not defined
```
Menuはmein-processでいじるものになっていた模様。
ApplicationMenuカスタム処理をmain-processへ移動した(electron 12対応)
を参照 。
main-processのindex.jsの先頭付近に移動した。
```
7 require(path.join(__dirname, 'main-process/application-menu.js'))¬
8 require(path.join(__dirname, 'main-process/context-menu.js'))
```
electron-api-demosでは` Menu.setApplicationMenu()`はコールバックに仕込んでいたが、コンテキストメニューではしていないので、踏襲してそのまま呼び出しで済ませることにした。
```
10 const {Menu, MenuItem, app, ipcMain} = require('electron')¬
11 let menu = new Menu();¬
12 ¬
13 menu.append(new MenuItem({¬
14 >-------label: 'Copy',¬
15 >-------accelerator: 'CmdOrCtrl+C',¬
16 >-------role: 'copy'¬
17 }));¬
```
またコンテキストメニュー表示のコールバックも、 renderer-processでしていたのをelectron-api-demosの通りにmain-processへ移した。
rendererとmain-processでイベント が違う。
Before:
``` (renderer-process)
11 >------->-------window.addEventListener('contextmenu', function (e) {¬
12 >------->------->-------e.preventDefault();¬
13 >------->------->-------menu.popup(remote.getCurrentWindow());¬
14 >------->-------}, false);¬
```
After: 'main-process/application-menu.js'(main-process)
```
app.on('browser-window-created', (event, win) => {
win.webContents.on('context-menu', (e, params) => {
menu.popup(win, params.x, params.y)
})
})
ipcMain.on('show-context-menu', (event) => {
const win = BrowserWindow.fromWebContents(event.sender)
menu.popup(win)
})
```
ApplicationMenuのときと同じく、Rendererに持たせたmoduleを呼び出す機能は動作しない。
そちらは後でpreload.js, ipcRendererなどを使う方式へ移行する。
0 件のコメント:
コメントを投稿