2017-02-22 16 views
0

私は以前にこの質問Stacking of Context Menus in Electronを書いてcontext menu module for electronにこの問題を作成しました。電子メールで文脈メニューの登録者を登録解除する方法

私の質問は非常に詳細ですが、回答はありません。次に、@sindresorhus私はStackOverflowでこの質問をすることをお勧めします:

どのように私は電子メールの登録を解除するのですか?第二は、その後、私は別の領域を右クリックしたときに、しかし

handleContextMenu() { 
    this.props.contextMenu({ 
     prepend: (params, browserWindow) => [{ 
     label: `Summary ${this.state.msn}`, 
     click:() => this.createSummary() 
     },{ 
     label: `Library Compare ${this.state.msn}`, 
     click:() => this.runLibCompare() 
     },{ 
     label: `Visualize ${this.state.msn}`, 
     click:() => dialog.showMessageBox({ 
      type: 'question', 
      buttons: this.vizButtons, 
      defaultId: 0, 
      title: `Choose your visualization`, 
      message: `Choose your visualization for ${this.state.msn}.`, 
      }, res => this.visualize(res)) 
     }] 
    }); 
    }; 

、最初のコンテキストメニューがポップアップし、:私はあなたがクリックした場所に応じて、異なるコンテキストメニューが表示されます、これでプログラムを持っています現在のコンテキストメニューが表示されるまで

私は基本的に、コンテキストメニューが終了した後で登録を解除したいと思っています。それ、どうやったら出来るの?

更新: は、コンテキストメニューを取り除くと、単にhandleContextMenu機能にこれを与え得た:

handleContextMenu = menuItems => { 
    const menu = new electron.remote.Menu(); 
    menu.append(new electron.remote.MenuItem(menuItems)); 
    menu.popup(electron.remote.getCurrentWindow()); 
    } 

そして、それは働きます!つまり、電子文脈メニューもなくなりました。

答えて

1

標準Electron Menu APIを追加モジュールなしで使用することができます。おそらくelectron-context-menuを使用すると、標準のコンテキストメニューの特定の使用例を簡略化するように設計されているようです。標準メニューAPIを使用すると、クリックごとにメニューを作成してポップアップできるので、メニューを「登録解除」する必要はありません。第2の右に、最初に右クリックした項目とメニューが表示されます「コンテキストメニュー1」で

let menuCount = 1; 
window.addEventListener('contextmenu', (e) => { 
    e.preventDefault(); 
    let menu = new electron.remote.Menu(); 
    menu.append(new electron.remote.MenuItem({label : "Context Menu "+menuCount++})) 
    menu.popup(electron.remote.getCurrentWindow()); 
}); 

ここでは単純化した例は、各クリックで異なる新しいコンテキストメニューを作成し、です「コンテキストメニュー2」などがあります。

+0

いいえ私のコードをあなたの正確な提案に置き換えましたが、まだスタッキング効果を得ています..今度はnといいます... n-1 ... 3 ... 2 ... 1 –

+0

私はイベントからメニューを削除する方法を考え出す必要がありますか? –

+0

ああ待って...私はそれを得たと思う。私はwindow.addEventListenerを削除し、それは繰り返されていないようです。私にこれをもう少し肉でさせてください –

関連する問題