diff --git a/app/menu.js b/app/menu.js index b71fac01..8a8a493a 100644 --- a/app/menu.js +++ b/app/menu.js @@ -21,28 +21,48 @@ export default class MenuBuilder { template = this.buildDefaultTemplate() } + this.setupInputTemplate() + const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) + return menu } - setupDevelopmentEnvironment() { - this.mainWindow.openDevTools() + setupInputTemplate() { + const selectionMenu = Menu.buildFromTemplate([ + { role: 'copy' }, + { type: 'separator' }, + { role: 'selectall' }, + ]) + + const inputMenu = Menu.buildFromTemplate([ + { role: 'undo' }, + { role: 'redo' }, + { type: 'separator' }, + { role: 'cut' }, + { role: 'copy' }, + { role: 'paste' }, + { type: 'separator' }, + { role: 'selectall' }, + ]) + this.mainWindow.webContents.on('context-menu', (e, props) => { - const { x, y } = props - - Menu - .buildFromTemplate([{ - label: 'Inspect element', - click: () => { - this.mainWindow.inspectElement(x, y) - } - }]) - .popup(this.mainWindow) + const { selectionText, isEditable } = props; + + if (isEditable) { + inputMenu.popup(this.mainWindow); + } else if (selectionText && selectionText.trim() !== '') { + selectionMenu.popup(this.mainWindow); + } }) } + setupDevelopmentEnvironment() { + this.mainWindow.openDevTools() + } + buildDarwinTemplate() { const subMenuAbout = { label: 'Electron',