Browse Source

Merge pull request #2138 from maxerbox/fix-electron-webview-event-not-propaggaded

Fix electron webview keyinput event not propagaded.
revert-2138-fix-electron-webview-event-not-propaggaded
Simon Sassi 6 years ago committed by GitHub
parent
commit
b844524ee3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      app/Application.js
  2. 23
      app/ux/WebView.js
  3. 9
      package-lock.json
  4. 1
      package.json

3
app/Application.js

@ -24,7 +24,6 @@ Ext.define('Rambox.Application', {
totalServicesLoaded: 0
,totalNotifications: 0
}
,launch: function () {
// Prevent track if the user have disabled this option (default: false)
if ( !ipc.sendSync('sendStatistics') ) {
@ -60,7 +59,7 @@ Ext.define('Rambox.Application', {
if ( require('electron').remote.process.argv.indexOf('--without-update') === -1 ) Rambox.app.checkUpdate(true);
// Add shortcuts to switch services using CTRL + Number
var map = new Ext.util.KeyMap({
document.keyMapping = new Ext.util.KeyMap({
target: document
,binding: [
{

23
app/ux/WebView.js

@ -454,6 +454,29 @@ Ext.define('Rambox.ux.WebView',{
webview.executeJavaScript(js_inject);
});
webview.getWebContents().on('before-input-event', (event, input) => {
if (input.type !== 'keyDown') { // event used by default
return;
}
// because keyCode property is not passed
const keycode = require('keycodes')
// Create a fake KeyboardEvent from the data provided
var emulatedKeyboardEvent = new KeyboardEvent('keydown', {
code: input.code,
key: input.key,
shiftKey: input.shift,
altKey: input.alt,
ctrlKey: input.control,
metaKey: input.meta,
repeat: input.isAutoRepeat,
keyCode: keycode(input.key) //get real key code
});
emulatedKeyboardEvent.getKey = function() {
return this.keyCode || this.charCode // fake function, normally used by Ext.js, simply returning keyCode
}
document.keyMapping.handleTargetEvent(emulatedKeyboardEvent) // we directly trigger handleTargetEvent. That's a private method normally. We can't fire the event directly with document.dispatch, unfortunately
});
webview.addEventListener('ipc-message', function(event) {
var channel = event.channel;

9
package-lock.json generated

@ -1,6 +1,6 @@
{
"name": "Rambox",
"version": "0.6.3",
"version": "0.6.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1862,7 +1862,7 @@
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
@ -3105,6 +3105,11 @@
"verror": "1.10.0"
}
},
"keycodes": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/keycodes/-/keycodes-1.0.0.tgz",
"integrity": "sha512-ukEttiO9Sjb/dj29GQw3/mVXyI3575QTtvetCJfBrVjytESKefRHCt7GUmruvFwWIUqvMD9p5uk7Y3y//4B+hw=="
},
"klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",

1
package.json

@ -189,6 +189,7 @@
"electron-log": "^2.2.17",
"electron-store": "^2.0.0",
"electron-updater": "^3.1.2",
"keycodes": "^1.0.0",
"mime": "^2.3.1",
"request": "^2.88.0",
"request-promise": "^4.2.2",

Loading…
Cancel
Save