From 3bfb040969f436bee56983cba28d79caeb4b2f37 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Thu, 4 Apr 2019 14:35:51 -0300 Subject: [PATCH] Fixed right click / context menu Fixes #2154 --- app.js | 6 +- app/ux/WebView.js | 8 +-- package-lock.json | 110 +++++++---------------------- package.json | 2 +- resources/js/rambox-service-api.js | 6 +- 5 files changed, 38 insertions(+), 94 deletions(-) diff --git a/app.js b/app.js index f834169b..0d21222c 100644 --- a/app.js +++ b/app.js @@ -16,7 +16,11 @@ Ext.application({ // auto update logic const ipc = require('electron').ipcRenderer; -require('electron-context-menu')(); +const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper'); +const contextMenuBuilder = new ContextMenuBuilder(); +const contextMenuListener = new ContextMenuListener(function(event, info) { + contextMenuBuilder.showPopupMenu(info); +}); ipc.on('showAbout', function(event, message) { !Ext.cq1('about') ? Ext.create('Rambox.view.main.About') : ''; diff --git a/app/ux/WebView.js b/app/ux/WebView.js index fde66631..d5ca7f66 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -232,10 +232,6 @@ Ext.define('Rambox.ux.WebView',{ var webview = me.down('component').el.dom; - setTimeout(function() { - require('electron-context-menu')({window: webview}); - }, 100); - // Google Analytics Event ga_storage._trackEvent('Services', 'load', me.type, 1, true); @@ -456,11 +452,11 @@ Ext.define('Rambox.ux.WebView',{ webview.executeJavaScript(js_inject); }); - + const keycode = require('keycodes'); webview.getWebContents().on('before-input-event', (event, input) => { if (input.type !== 'keyDown' || input.key === 'z' || input.key === 'a' ) return; // event used by default - + // because keyCode property is not passed // Create a fake KeyboardEvent from the data provided var emulatedKeyboardEvent = new KeyboardEvent('keydown', { diff --git a/package-lock.json b/package-lock.json index a56d87fb..c3e233f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1788,32 +1788,36 @@ } } }, - "electron-context-menu": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.9.1.tgz", - "integrity": "sha1-7U3yDAgEkcPJlqv8s2MVmUajgFg=", + "electron-contextmenu-wrapper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/electron-contextmenu-wrapper/-/electron-contextmenu-wrapper-2.0.0.tgz", + "integrity": "sha512-al2x8c0p83fuMcwh/k8F6LsTMkVap7kJskX1TwODw8RNY8rVe8FMA55Hj4BOmiKp9TzQbtdXQY3ZLMqJVElR6w==", "requires": { - "electron-dl": "^1.2.0", - "electron-is-dev": "^0.1.1" + "debug": "^4.1.0", + "mkdirp": "^0.5.1", + "pify": "^4.0.0" }, "dependencies": { - "electron-is-dev": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-0.1.2.tgz", - "integrity": "sha1-ihBD4ys6HaHD9VPc4oznZCRhZ+M=" + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, - "electron-dl": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.11.0.tgz", - "integrity": "sha512-iL9qHzzWOuL9bus+UT+P72SwrDQcFTV6QHqcbhwgqjCC9/K5jhdRzG0dIMB3TzYlk6rmApanPqh9DvWykwIH1Q==", - "requires": { - "ext-name": "^5.0.0", - "pupa": "^1.0.0", - "unused-filename": "^1.0.0" - } - }, "electron-download": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", @@ -2162,23 +2166,6 @@ "strip-eof": "^1.0.0" } }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } - }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -2971,11 +2958,6 @@ "path-is-inside": "^1.0.1" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -3319,11 +3301,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", @@ -3357,14 +3334,12 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" } @@ -3498,11 +3473,6 @@ } } }, - "modify-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", - "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3914,11 +3884,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "pupa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz", - "integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=" - }, "q": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", @@ -4395,22 +4360,6 @@ "string-width": "^1.0.1" } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "requires": { - "sort-keys": "^1.0.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4888,15 +4837,6 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" }, - "unused-filename": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz", - "integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=", - "requires": { - "modify-filename": "^1.1.0", - "path-exists": "^3.0.0" - } - }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", diff --git a/package.json b/package.json index 4e66f3b7..d88bd6af 100644 --- a/package.json +++ b/package.json @@ -184,7 +184,7 @@ "auth0-js": "^9.7.3", "auto-launch-patched": "5.0.2", "crypto": "^1.0.1", - "electron-context-menu": "0.9.1", + "electron-contextmenu-wrapper": "2.0.0", "electron-is-dev": "^0.3.0", "electron-log": "^2.2.17", "electron-store": "^2.0.0", diff --git a/resources/js/rambox-service-api.js b/resources/js/rambox-service-api.js index 1acbc715..3d216e26 100644 --- a/resources/js/rambox-service-api.js +++ b/resources/js/rambox-service-api.js @@ -3,6 +3,7 @@ */ const { ipcRenderer } = require('electron'); +const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper'); /** * Make the Rambox API available via a global "rambox" variable. @@ -50,4 +51,7 @@ Notification.prototype = NativeNotification.prototype; Notification.permission = NativeNotification.permission; Notification.requestPermission = NativeNotification.requestPermission.bind(Notification); -window.close = function() { location.href = location.origin }; +window.rambox.contextMenuBuilder = new ContextMenuBuilder(); +window.rambox.contextMenuListener = new ContextMenuListener(function(event, info) { + window.rambox.contextMenuBuilder.showPopupMenu(info); +});