Explorar el Código

Merge pull request #111 from ckeditor/t/ckeditor5/1243

Internal: Remove default parameter from `model.insertContent()` calls.
Piotr Jasiun hace 7 años
padre
commit
a933440cca

+ 10 - 1
packages/ckeditor5-list/src/converters.js

@@ -10,6 +10,7 @@
 import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
 import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
 import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
+import ModelSelection from '@ckeditor/ckeditor5-engine/src/model/selection';
 
 import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
 import ViewRange from '@ckeditor/ckeditor5-engine/src/view/range';
@@ -749,7 +750,7 @@ export function modelChangePostFixer( model, writer ) {
  * @param {module:utils/eventinfo~EventInfo} evt An object containing information about the fired event.
  * @param {Array} args Arguments of {@link module:engine/model/model~Model#insertContent}.
  */
-export function modelIndentPasteFixer( evt, [ content, selection ] ) {
+export function modelIndentPasteFixer( evt, [ content, selectable ] ) {
 	// Check whether inserted content starts from a `listItem`. If it does not, it means that there are some other
 	// elements before it and there is no need to fix indents, because even if we insert that content into a list,
 	// that list will be broken.
@@ -757,6 +758,14 @@ export function modelIndentPasteFixer( evt, [ content, selection ] ) {
 	// would create incorrect model.
 	let item = content.is( 'documentFragment' ) ? content.getChild( 0 ) : content;
 
+	let selection;
+
+	if ( !selectable ) {
+		selection = this.document.selection;
+	} else {
+		selection = new ModelSelection( selectable );
+	}
+
 	if ( item && item.is( 'listItem' ) ) {
 		// Get a reference list item. Inserted list items will be fixed according to that item.
 		const pos = selection.getFirstPosition();

+ 28 - 11
packages/ckeditor5-list/tests/listediting.js

@@ -3309,8 +3309,7 @@ describe( 'ListEditing', () => {
 					'<listItem listType="bulleted" listIndent="0">X</listItem>' +
 					'<listItem listType="bulleted" listIndent="1">Y</listItem>',
 					model.schema
-				),
-				modelDoc.selection
+				)
 			);
 
 			expect( getModelData( model ) ).to.equal(
@@ -3321,8 +3320,7 @@ describe( 'ListEditing', () => {
 			);
 		} );
 
-		// Just checking that it doesn't crash. #69
-		it( 'should work if an element is passed to DataController#insertContent()', () => {
+		it( 'should be triggered when selectable is passed', () => {
 			setModelData( model,
 				'<listItem listType="bulleted" listIndent="0">A</listItem>' +
 				'<listItem listType="bulleted" listIndent="1">B[]</listItem>' +
@@ -3330,13 +3328,18 @@ describe( 'ListEditing', () => {
 			);
 
 			editor.model.insertContent(
-				new ModelElement( 'listItem', { listType: 'bulleted', listIndent: '0' }, 'X' ),
-				modelDoc.selection
+				parseModel(
+					'<listItem listType="bulleted" listIndent="0">X</listItem>' +
+					'<listItem listType="bulleted" listIndent="1">Y</listItem>',
+					model.schema
+				),
+				new ModelRange( new ModelPosition( modelRoot, [ 1, 1 ] ), new ModelPosition( modelRoot, [ 1, 1 ] ) )
 			);
 
 			expect( getModelData( model ) ).to.equal(
 				'<listItem listIndent="0" listType="bulleted">A</listItem>' +
-				'<listItem listIndent="1" listType="bulleted">BX[]</listItem>' +
+				'<listItem listIndent="1" listType="bulleted">B[]X</listItem>' +
+				'<listItem listIndent="2" listType="bulleted">Y</listItem>' +
 				'<listItem listIndent="2" listType="bulleted">C</listItem>'
 			);
 		} );
@@ -3349,11 +3352,25 @@ describe( 'ListEditing', () => {
 				'<listItem listType="bulleted" listIndent="2">C</listItem>'
 			);
 
-			editor.model.insertContent(
-				new ModelText( 'X' ),
-				modelDoc.selection
+			editor.model.insertContent( new ModelElement( 'listItem', { listType: 'bulleted', listIndent: '0' }, 'X' ) );
+
+			expect( getModelData( model ) ).to.equal(
+				'<listItem listIndent="0" listType="bulleted">A</listItem>' +
+				'<listItem listIndent="1" listType="bulleted">BX[]</listItem>' +
+				'<listItem listIndent="2" listType="bulleted">C</listItem>'
+			);
+		} );
+
+		// Just checking that it doesn't crash. #69
+		it( 'should work if an element is passed to DataController#insertContent()', () => {
+			setModelData( model,
+				'<listItem listType="bulleted" listIndent="0">A</listItem>' +
+				'<listItem listType="bulleted" listIndent="1">B[]</listItem>' +
+				'<listItem listType="bulleted" listIndent="2">C</listItem>'
 			);
 
+			editor.model.insertContent( new ModelText( 'X' ) );
+
 			expect( getModelData( model ) ).to.equal(
 				'<listItem listIndent="0" listType="bulleted">A</listItem>' +
 				'<listItem listIndent="1" listType="bulleted">BX[]</listItem>' +
@@ -3494,7 +3511,7 @@ describe( 'ListEditing', () => {
 			setModelData( model, '<paragraph>[]</paragraph>' );
 
 			expect( () => {
-				editor.model.insertContent( new ModelDocumentFragment(), modelDoc.selection );
+				editor.model.insertContent( new ModelDocumentFragment() );
 			} ).not.to.throw();
 		} );