From 4e377629e39a4af9405a5ea8972bdeb1af37ddf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Inez=20Korczyn=CC=81ski?= Date: Wed, 12 Jun 2013 15:03:40 -0700 Subject: [PATCH] (bug 48335) Use more generic approach to filter out non-character key presses. Change-Id: Ie00becf1162f145134f006b0b4514ba874de9c43 --- modules/ve/ce/ve.ce.Surface.js | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js index 0434acf9f9..5d3cebac22 100644 --- a/modules/ve/ce/ve.ce.Surface.js +++ b/modules/ve/ce/ve.ce.Surface.js @@ -467,6 +467,7 @@ ve.ce.Surface.prototype.onDocumentKeyPress = function ( e ) { var selection, prevNode, documentModel = this.model.getDocument(); // Prevent IE from editing Aliens/Entities + // TODO: Better comment about what's going on here is needed. if ( $.browser.msie === true ) { selection = this.model.getSelection(); if ( selection.start !== 0 && selection.isCollapsed() ) { @@ -481,20 +482,14 @@ ve.ce.Surface.prototype.onDocumentKeyPress = function ( e ) { } } - // FF fires keypress for bunch of function keys that we want to ignore - if ( ve.ce.isArrowKey( e.keyCode ) || - ve.ce.isShortcutKey( e ) || - e.keyCode === 13 || - e.which === ve.Keys.UNDEFINED || - e.keyCode === ve.Keys.BACKSPACE || - e.keyCode === ve.Keys.END || - e.keyCode === ve.Keys.ENTER || - e.keyCode === ve.Keys.HOME || - e.keyCode === ve.Keys.TAB || - e.keyCode === ve.Keys.PAGEDOWN || - e.keyCode === ve.Keys.PAGEUP ) { + // Filter out non-character keys. If those keys wouldn't be filtered out unexpected content + // deletion would occur in case when selection is not collapsed and user press home key for + // instance (Firefox fires keypress for home key). + // TODO: Should be covered with Selenium tests. + if ( e.which === 0 || e.charCode === 0 ) { return; } + this.handleInsertion(); setTimeout( ve.bind( function () { this.surfaceObserver.start();