Electron 1.4.15 を使ったデスクトップアプリで、ウィンドウとトレイアイコンに共通のコンテキストメニューをもたせようとしています。
それ自体はうまくいったのですが、トレイアイコンを destroy() を使って破棄した後、ウィンドウでのコンテキストメニューの項目を選択時にクラッシュしてしまいます。
これは Mac OS X(10.11で検証)で発生し、Windows 10 では発生しませんでした。
以下が再現するためのソースです。
Javascript
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>Sample</title> 6 <script> 7 const remote = require('electron').remote; 8 const {Menu, MenuItem, Tray, nativeImage} = remote; 9 10 var contextmenu = new Menu(); 11 var icon = nativeImage.createFromPath(__dirname + '/icon1.png'); 12 var tray; 13 14 contextmenu.append( 15 new MenuItem({ label: 'Item' }) 16 ); 17 18 tray = new Tray(icon.resize({ 19 width: 18, 20 height: 18 21 })); 22 tray.setContextMenu(contextmenu); 23 tray.destroy(); 24 25 window.addEventListener('contextmenu', function (ev) { 26 ev.preventDefault(); 27 contextmenu.popup(ev.x, ev.y); 28 return false; 29 }, false); 30 </script> 31</head> 32<body> 33 test 34</body> 35</html>
tray.destroy() で破棄後に再度 new Menu() でコンテキストメニューを作り直せばクラッシュは回避できるのですが不必要な作業に思えます。
ソース中に何かおかしな箇所があるのでしょうか?
よろしくお願いします。
あなたの回答
tips
プレビュー