// To make global shortcuts work even if focus is within the iframe,
// we have to intercept events manually.
var sendKeyEventToParent = function(domEvent) {
var qx = window.parent.qx;
// Ideally we could direct everything to the Keyboard handlers own
// input function (handler.__onKeyPress), but they marked it private
// - thanks Qooxdoo. See also:
// http://qooxdoo.678.n2.nabble.com/Inject-Keyboard-events-on-Qooxdoo-td7268755.html
//
// Instead, we'll have to use a later entry point which misses a
// lot of browser specific normalizations, which I hope we won't
// miss (stuff like trigger a keypress for non-printable characters
// like UP or DOWN really might).
//
// An alternative would be missing even more Qooxdoo default
// processing and triggering a Qooxdoo event for each ifrae DOM
// event manually in the parent using qx.event.Registration.fireEvent().
var handler = qx.event.Registration.getManager(window.parent)
.getHandler(qx.event.handler.Keyboard);
// See qx.event.handler.Keyboard for how these calls where constructed
if (domEvent.type == 'keypress') {
if (handler._charCode2KeyCode[domEvent.keyCode]) {
handler._idealKeyHandler(
handler._charCode2KeyCode[domEvent.keyCode], 0,
domEvent.type, domEvent);
} else {
handler._idealKeyHandler(0, domEvent.keyCode, domEvent.type, domEvent);
}
}
else
// keyup, keydown
handler._idealKeyHandler(domEvent.keyCode, 0, domEvent.type, domEvent);
};
this.documentNode.addEventListener('keydown', sendKeyEventToParent, true);
this.documentNode.addEventListener('keyup', sendKeyEventToParent, true);
this.documentNode.addEventListener('keypress', sendKeyEventToParent, true);
Like this:
Like Loading...
Related