diff options
Diffstat (limited to 'src/webview/contextMenu.js')
-rw-r--r-- | src/webview/contextMenu.js | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js index f02dd1a01..7ab60d251 100644 --- a/src/webview/contextMenu.js +++ b/src/webview/contextMenu.js | |||
@@ -1,7 +1,33 @@ | |||
1 | import { remote } from "electron"; | ||
1 | import { ContextMenuBuilder, ContextMenuListener } from "electron-spellchecker"; | 2 | import { ContextMenuBuilder, ContextMenuListener } from "electron-spellchecker"; |
2 | 3 | ||
4 | const webContents = remote.getCurrentWebContents(); | ||
5 | |||
3 | export default async function setupContextMenu(handler) { | 6 | export default async function setupContextMenu(handler) { |
4 | let contextMenuBuilder = new ContextMenuBuilder(handler); | 7 | const processMenu = (menu, menuInfo) => { |
8 | if ( | ||
9 | menuInfo.editFlags.canPaste && | ||
10 | !menuInfo.linkText && | ||
11 | !menuInfo.hasImageContents | ||
12 | ) { | ||
13 | menu.insert( | ||
14 | 3, | ||
15 | new remote.MenuItem({ | ||
16 | label: "Paste as plain text", | ||
17 | accelerator: "CommandOrControl+Shift+V", | ||
18 | click: () => webContents.pasteAndMatchStyle() | ||
19 | }) | ||
20 | ); | ||
21 | } | ||
22 | return menu; | ||
23 | }; | ||
24 | |||
25 | const contextMenuBuilder = new ContextMenuBuilder( | ||
26 | handler, | ||
27 | null, | ||
28 | true, | ||
29 | processMenu | ||
30 | ); | ||
5 | // eslint-disable-next-line no-new | 31 | // eslint-disable-next-line no-new |
6 | new ContextMenuListener(info => { | 32 | new ContextMenuListener(info => { |
7 | contextMenuBuilder.showPopupMenu(info); | 33 | contextMenuBuilder.showPopupMenu(info); |