diff options
Diffstat (limited to 'src/webview/contextMenu.js')
-rw-r--r-- | src/webview/contextMenu.js | 48 |
1 files changed, 6 insertions, 42 deletions
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js index eeb825ece..d04f90830 100644 --- a/src/webview/contextMenu.js +++ b/src/webview/contextMenu.js | |||
@@ -1,50 +1,14 @@ | |||
1 | import { remote } from 'electron'; | 1 | import { remote } from 'electron'; |
2 | import { ContextMenuBuilder, ContextMenuListener } from 'electron-spellchecker'; | 2 | import ContextMenuBuilder from './contextMenuBuilder'; |
3 | 3 | ||
4 | const webContents = remote.getCurrentWebContents(); | 4 | const webContents = remote.getCurrentWebContents(); |
5 | 5 | ||
6 | export default async function setupContextMenu(handler) { | 6 | export default async function setupContextMenu() { |
7 | const addCustomMenuItems = (menu, menuInfo) => { | ||
8 | // Add "Paste as plain text" item when right-clicking editable content | ||
9 | if ( | ||
10 | menuInfo.editFlags.canPaste | ||
11 | && !menuInfo.linkText | ||
12 | && !menuInfo.hasImageContents | ||
13 | ) { | ||
14 | menu.insert( | ||
15 | 3, | ||
16 | new remote.MenuItem({ | ||
17 | label: 'Paste as plain text', | ||
18 | accelerator: 'CommandOrControl+Shift+V', | ||
19 | click: () => webContents.pasteAndMatchStyle(), | ||
20 | }), | ||
21 | ); | ||
22 | } | ||
23 | |||
24 | // Add "Open Link in Ferdi" item for links | ||
25 | if (menuInfo.linkURL) { | ||
26 | menu.insert( | ||
27 | 2, | ||
28 | new remote.MenuItem({ | ||
29 | label: 'Open Link in Ferdi', | ||
30 | click: () => { | ||
31 | window.location.href = menuInfo.linkURL; | ||
32 | }, | ||
33 | }), | ||
34 | ); | ||
35 | } | ||
36 | |||
37 | return menu; | ||
38 | }; | ||
39 | |||
40 | const contextMenuBuilder = new ContextMenuBuilder( | 7 | const contextMenuBuilder = new ContextMenuBuilder( |
41 | handler, | 8 | webContents, |
42 | null, | ||
43 | true, | ||
44 | addCustomMenuItems, | ||
45 | ); | 9 | ); |
46 | // eslint-disable-next-line no-new | 10 | |
47 | new ContextMenuListener((info) => { | 11 | webContents.on('context-menu', (event, params) => { |
48 | contextMenuBuilder.showPopupMenu(info); | 12 | contextMenuBuilder.showPopupMenu(params); |
49 | }); | 13 | }); |
50 | } | 14 | } |