diff --git a/packages/ckeditor5-engine/src/model/utils/deletecontent.js b/packages/ckeditor5-engine/src/model/utils/deletecontent.js index 0e865134a57..4dd4d318cf3 100644 --- a/packages/ckeditor5-engine/src/model/utils/deletecontent.js +++ b/packages/ckeditor5-engine/src/model/utils/deletecontent.js @@ -84,8 +84,8 @@ export default function deleteContent( model, selection, options = {} ) { const [ startPosition, endPosition ] = getLivePositionsForSelectedBlocks( selRange ); // 2. Remove the content if there is any. - if ( !selRange.start.isTouching( selRange.end ) ) { - writer.remove( selRange ); + if ( !startPosition.isTouching( endPosition ) ) { + writer.remove( writer.createRange( startPosition, endPosition ) ); } // 3. Merge elements in the right branch to the elements in the left branch. diff --git a/packages/ckeditor5-engine/tests/model/utils/deletecontent.js b/packages/ckeditor5-engine/tests/model/utils/deletecontent.js index 2c615a6834c..b1b709212e1 100644 --- a/packages/ckeditor5-engine/tests/model/utils/deletecontent.js +++ b/packages/ckeditor5-engine/tests/model/utils/deletecontent.js @@ -249,6 +249,12 @@ describe( 'DataController utils', () => { 'x[]bary' ); + test( + 'do not remove end block if selection ends at start position of it (multiple paragraphs)', + 'x[fooa]bar', + 'x[]bar' + ); + test( 'removes empty element (merges it into second element)', 'x[]bary',