Skip to content

Commit

Permalink
Add Context Menu in widget page
Browse files Browse the repository at this point in the history
  • Loading branch information
HyunmoAhn committed Jul 14, 2018
1 parent 882aa60 commit 85c58bf
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
7 changes: 7 additions & 0 deletions app/page/webview/components/WebWidget/WebWidget.jsx
Expand Up @@ -4,6 +4,7 @@ import { shell } from 'electron';
import url from 'url';
import * as PATH from 'constants/path';
import * as USER_AGENT from 'constants/userAgent';
import widgetContenxtMenu from 'utils/process/widgetContextMenu';
import WebWidgetHeader from './components/WebWidgetHeader';
import WebWidgetMobileHeader from './components/WebWidgetMobileHeader';
import WebWidgetSetting from './components/WebWidgetSetting';
Expand Down Expand Up @@ -57,6 +58,12 @@ class WebWidget extends React.Component {
shell.openExternal(e.url);
});

this.webViewRef.current.addEventListener('dom-ready', () => {
window.addEventListener('contextmenu', () => {
widgetContenxtMenu(this.webViewRef.current);
});
});

// Communicate webview tag and BrowserWindow
this.webViewRef.current.addEventListener('ipc-message', (e) => {
if (e.channel === 'scroll') {
Expand Down
55 changes: 55 additions & 0 deletions app/utils/process/widgetContextMenu.js
@@ -0,0 +1,55 @@
import { remote, shell } from 'electron';

const { Menu } = remote;

const widgetContextMenu = (webview) => {
const template = [
{
label: 'Back',
enabled: webview.canGoBack(),
click: () => { webview.goBack(); },
},
{
label: 'Forward',
enabled: webview.canGoForward(),
click: () => { webview.goForward(); },
},
{
label: 'Reload',
click: () => { webview.reload(); },
},
{ type: 'separator' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{ role: 'selectall' },
{ type: 'separator' },
{
label: 'Copy Current URL',
click: () => {
const url = webview.getWebContents().getURL();
const body = document.querySelector('body');
const textarea = document.createElement('textarea');

textarea.value = url;
body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
body.removeChild(textarea);
},
},
{
label: 'Open Browser',
click: () => {
const url = webview.getWebContents().getURL();
shell.openExternal(url);
},
},
];

const menu = Menu.buildFromTemplate(template);

menu.popup(remote.getCurrentWindow());
};

export default widgetContextMenu;

0 comments on commit 85c58bf

Please sign in to comment.