diff --git a/app.js b/app.js index 0d21222c..b9ba2770 100644 --- a/app.js +++ b/app.js @@ -147,3 +147,23 @@ ipc.on('toggleStatusBar', function() { window.addEventListener('focus', function() { if(Ext.cq1("app-main")) Ext.cq1("app-main").getActiveTab().down('component').el.dom.focus(); }); + +// Handles zoom from menu +ipc.on('resetzoom-webview', function() { + var tabPanel = Ext.cq1('app-main'); + if ( tabPanel.items.indexOf(tabPanel.getActiveTab()) === 0 ) return false; + + tabPanel.getActiveTab().resetZoom(); +}); +ipc.on('zoomin-webview', function() { + var tabPanel = Ext.cq1('app-main'); + if ( tabPanel.items.indexOf(tabPanel.getActiveTab()) === 0 ) return false; + + tabPanel.getActiveTab().zoomIn(); +}); +ipc.on('zoomout-webview', function() { + var tabPanel = Ext.cq1('app-main'); + if ( tabPanel.items.indexOf(tabPanel.getActiveTab()) === 0 ) return false; + + tabPanel.getActiveTab().zoomOut(); +}); diff --git a/app/ux/WebView.js b/app/ux/WebView.js index e9188484..e09ba2f1 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -807,25 +807,29 @@ Ext.define('Rambox.ux.WebView',{ } ,zoomIn: function() { - var me = this; - var webview = me.getWebView(); - - me.zoomLevel = me.zoomLevel + 0.25; - if ( me.record.get('enabled') ) { - webview.setZoomLevel(me.zoomLevel); - me.record.set('zoomLevel', me.zoomLevel); - } + if ( this.timeout ) clearTimeout( this.timeout ); + this.timeout = setTimeout(() => { + var me = this; + var webview = me.getWebView(); + me.zoomLevel = me.zoomLevel + 0.25; + if ( me.record.get('enabled') ) { + webview.setZoomLevel(me.zoomLevel); + me.record.set('zoomLevel', me.zoomLevel); + } + }, 100); } ,zoomOut: function() { - var me = this; - var webview = me.getWebView(); - - me.zoomLevel = me.zoomLevel - 0.25; - if ( me.record.get('enabled') ) { - webview.setZoomLevel(me.zoomLevel); - me.record.set('zoomLevel', me.zoomLevel); - } + if ( this.timeout ) clearTimeout( this.timeout ); + this.timeout = setTimeout(() => { + var me = this; + var webview = me.getWebView(); + me.zoomLevel = me.zoomLevel - 0.25; + if ( me.record.get('enabled') ) { + webview.setZoomLevel(me.zoomLevel); + me.record.set('zoomLevel', me.zoomLevel); + } + }, 100); } ,resetZoom: function() { diff --git a/electron/menu.js b/electron/menu.js index c65f6573..df088c11 100644 --- a/electron/menu.js +++ b/electron/menu.js @@ -172,13 +172,16 @@ module.exports = function(config) { type: 'separator' }, { - role: 'zoomin' + label: 'Zoom In', + click(item, win) { win.webContents.send('zoomin-webview')} }, { - role: 'zoomout' + label: 'Zoom Out', + click(item, win) { win.webContents.send('zoomout-webview')} }, { - role: 'resetzoom' + label: 'Reset Zoom', + click(item, win) { win.webContents.send('resetzoom-webview')} } ] },