diff --git a/app/ux/WebView.js b/app/ux/WebView.js index aa45e4ba..1216493e 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -55,28 +55,59 @@ Ext.define('Rambox.ux.WebView',{ badgetextchange: me.onBadgeTextChange } ,clickEvent: 'dblclick' - ,menu: [ - { - text: 'Reload' - ,glyph: 'xf021@FontAwesome' - ,scope: me - ,handler: me.reloadService - } - ,{ - text: localStorage.getItem('offline_'+me.id.replace('tab_', '')) ? 'Go Online' : 'Go Offline' - ,glyph: 'xf0ac@FontAwesome' - ,scope: me - ,offline: localStorage.getItem('offline_'+me.id.replace('tab_', '')) ? true : false - ,handler: me.setOffline - } - ,'-' - ,{ - text: 'Toggle Developer Tools' - ,glyph: 'xf121@FontAwesome' - ,scope: me - ,handler: me.toggleDevTools - } - ] + ,menu: { + plain: true + ,items: [ + { + xtype: 'toolbar' + ,items: [ + { + xtype: 'segmentedbutton' + ,allowToggle: false + ,flex: 1 + ,items: [ + { + text: 'Back' + ,glyph: 'xf053@FontAwesome' + ,flex: 1 + ,scope: me + ,handler: me.goBack + } + ,{ + text: 'Foward' + ,glyph: 'xf054@FontAwesome' + ,iconAlign: 'right' + ,flex: 1 + ,scope: me + ,handler: me.goForward + } + ] + } + ] + } + ,'-' + ,{ + text: 'Reload' + ,glyph: 'xf021@FontAwesome' + ,scope: me + ,handler: me.reloadService + } + ,{ + text: localStorage.getItem('offline_'+me.id.replace('tab_', '')) ? 'Go Online' : 'Go Offline' + ,glyph: 'xf0ac@FontAwesome' + ,scope: me + ,offline: localStorage.getItem('offline_'+me.id.replace('tab_', '')) ? true : false + ,handler: me.setOffline + } + ,'-' + ,{ + text: 'Toggle Developer Tools' + ,glyph: 'xf121@FontAwesome' + ,scope: me + ,handler: me.toggleDevTools + } + ] + } } ,listeners: { afterrender: me.onAfterRender @@ -260,4 +291,18 @@ Ext.define('Rambox.ux.WebView',{ btn.setText(Ext.String.toggle(btn.text, 'Go Online', 'Go Offline')); btn.offline ? localStorage.setItem('offline_'+me.id.replace('tab_', ''), true) : localStorage.removeItem('offline_'+me.id.replace('tab_', '')); } + + ,goBack: function() { + var me = this; + var webview = me.down('component').el.dom; + + webview.goBack(); + } + + ,goForward: function() { + var me = this; + var webview = me.down('component').el.dom; + + webview.goForward(); + } }); diff --git a/electron/main.js b/electron/main.js index e2a28c2a..11727b2f 100644 --- a/electron/main.js +++ b/electron/main.js @@ -150,6 +150,13 @@ function createWindow () { event.preventDefault(); }); + mainWindow.on('app-command', (e, cmd) => { + // Navigate the window back when the user hits their mouse back button + if ( cmd === 'browser-backward' ) mainWindow.webContents.executeJavaScript('Ext.cq1("app-main").getActiveTab().goBack();'); + // Navigate the window forward when the user hits their mouse forward button + if ( cmd === 'browser-forward' ) mainWindow.webContents.executeJavaScript('Ext.cq1("app-main").getActiveTab().goForward();'); + }) + // Emitted when the window is closed. mainWindow.on('close', function(e) { if ( !isQuitting ) {