diff --git a/core/dom/elementpath.js b/core/dom/elementpath.js index 53b0ce467ea..d6ba92b704f 100644 --- a/core/dom/elementpath.js +++ b/core/dom/elementpath.js @@ -141,7 +141,7 @@ CKEDITOR.dom.elementPath.prototype = { }; else if ( CKEDITOR.tools.isArray( query ) ) evaluator = function( node ) { - query.indexOf( node.getName() ) > -1; + return query.indexOf( node.getName() ) > -1; }; else if ( typeof query == 'function' ) evaluator = query; diff --git a/core/editable.js b/core/editable.js index 8bf7d1ae787..5fe25174dee 100644 --- a/core/editable.js +++ b/core/editable.js @@ -528,7 +528,16 @@ evt.data.preventDefault(); } - + // BACKSPACE/DEL pressed at the start/end of table cell. + else if ( ( parent = path.contains( [ 'td', 'th', 'caption' ] ) ) && + range.checkBoundaryOfElement( parent, rtl ? CKEDITOR.START : CKEDITOR.END ) ) { + next = parent[ rtl ? 'getPreviousSourceNode' : 'getNextSourceNode' ]( 1, CKEDITOR.NODE_ELEMENT ); + if ( next && !next.isReadOnly() && range.root.contains( next ) ) { + range[ rtl ? 'moveToElementEditEnd' : 'moveToElementEditStart' ]( next ); + range.select(); + evt.data.preventDefault(); + } + } } }