diff --git a/app/content/webviewPreload.js b/app/content/webviewPreload.js index 20a3a5857e1..677eec6188d 100644 --- a/app/content/webviewPreload.js +++ b/app/content/webviewPreload.js @@ -210,12 +210,33 @@ document.addEventListener('contextmenu', (e) => { e.preventDefault() }, false) +var shiftDown = false document.onkeydown = (e) => { switch (e.keyCode) { case KeyCodes.ESC: e.preventDefault() ipc.send(messages.STOP_LOAD) break + case KeyCodes.BACKSPACE: + const msg = shiftDown ? messages.GO_FORWARD : messages.GO_BACK + const elem = document.activeElement + if (elem.contentEditable !== 'true' && + elem.nodeName !== 'INPUT' && + elem.nodeName !== 'TEXTAREA') { + // TODO: find other node types where this shortcut should be disabled + ipc.send(msg) + } + break + case KeyCodes.SHIFT: + shiftDown = true + break + } +} +document.onkeyup = (e) => { + switch (e.keyCode) { + case KeyCodes.SHIFT: + shiftDown = false + break } } diff --git a/app/index.js b/app/index.js index e97d836ff8c..3d49a8c8cee 100644 --- a/app/index.js +++ b/app/index.js @@ -134,6 +134,12 @@ app.on('ready', function () { ipcMain.on(messages.STOP_LOAD, () => { BrowserWindow.getFocusedWindow().webContents.send(messages.STOP_LOAD) }) + ipcMain.on(messages.GO_BACK, () => { + BrowserWindow.getFocusedWindow().webContents.send(messages.GO_BACK) + }) + ipcMain.on(messages.GO_FORWARD, () => { + BrowserWindow.getFocusedWindow().webContents.send(messages.GO_FORWARD) + }) // Load HTTPS Everywhere browser "extension" HttpsEverywhere.init() diff --git a/js/components/main.js b/js/components/main.js index c29b8cc2139..bb4a9176d49 100644 --- a/js/components/main.js +++ b/js/components/main.js @@ -35,6 +35,14 @@ class Main extends ImmutableComponent { ipc.on(messages.STOP_LOAD, () => { electron.remote.getCurrentWebContents().send(messages.SHORTCUT_ACTIVE_FRAME_STOP) }) + ipc.on(messages.GO_BACK, () => { + console.log('going back') + electron.remote.getCurrentWebContents().send(messages.SHORTCUT_ACTIVE_FRAME_BACK) + }) + ipc.on(messages.GO_FORWARD, () => { + console.log('going forward') + electron.remote.getCurrentWebContents().send(messages.SHORTCUT_ACTIVE_FRAME_FORWARD) + }) ipc.on(messages.CONTEXT_MENU_OPENED, (e, nodeProps) => { contextMenus.onMainContextMenu(nodeProps) }) diff --git a/js/constants/keyCodes.js b/js/constants/keyCodes.js index 2a6146160e8..7ba94801b53 100644 --- a/js/constants/keyCodes.js +++ b/js/constants/keyCodes.js @@ -6,7 +6,9 @@ const KeyCodes = { ENTER: 13, ESC: 27, UP: 38, - DOWN: 40 + DOWN: 40, + SHIFT: 16, + BACKSPACE: 8 } module.exports = KeyCodes diff --git a/js/constants/messages.js b/js/constants/messages.js index 31175b0b794..21c6fd928b5 100644 --- a/js/constants/messages.js +++ b/js/constants/messages.js @@ -55,6 +55,8 @@ const messages = { APP_STATE_CHANGE: _, APP_ACTION: _, STOP_LOAD: _, + GO_FORWARD: _, + GO_BACK: _, // Session restore REQUEST_WINDOW_STATE: _, RESPONSE_WINDOW_STATE: _,