Kaynağa Gözat

Internal: Sanitize `InsertOperation#position#stickiness`.

Szymon Cofalik 7 yıl önce
ebeveyn
işleme
cf4ce98d29

+ 1 - 0
packages/ckeditor5-engine/src/model/operation/insertoperation.js

@@ -40,6 +40,7 @@ export default class InsertOperation extends Operation {
 		 * @member {module:engine/model/position~Position} module:engine/model/operation/insertoperation~InsertOperation#position
 		 */
 		this.position = Position.createFromPosition( position );
+		this.position.stickiness = 'toNone';
 
 		/**
 		 * List of nodes to insert.

+ 1 - 0
packages/ckeditor5-engine/src/model/operation/moveoperation.js

@@ -41,6 +41,7 @@ export default class MoveOperation extends Operation {
 		 * @member {module:engine/model/position~Position} module:engine/model/operation/moveoperation~MoveOperation#sourcePosition
 		 */
 		this.sourcePosition = Position.createFromPosition( sourcePosition );
+		// `'toNext'` because `sourcePosition` is a bit like a start of the moved range.
 		this.sourcePosition.stickiness = 'toNext';
 
 		/**

+ 1 - 0
packages/ckeditor5-engine/src/model/operation/wrapoperation.js

@@ -43,6 +43,7 @@ export default class WrapOperation extends Operation {
 		 * @member {module:engine/model/position~Position} module:engine/model/operation/wrapoperation~WrapOperation#position
 		 */
 		this.position = Position.createFromPosition( position );
+		// `'toNext'` because `position` is a bit like a start of the wrapped range.
 		this.position.stickiness = 'toNext';
 
 		/**

+ 13 - 0
packages/ckeditor5-engine/tests/model/operation/insertoperation.js

@@ -31,6 +31,19 @@ describe( 'InsertOperation', () => {
 		expect( op.type ).to.equal( 'insert' );
 	} );
 
+	it( 'should have proper position stickiness', () => {
+		const pos = new Position( root, [ 0 ] );
+		pos.stickiness = 'toNext';
+
+		const op = new InsertOperation(
+			new Position( root, [ 0 ] ),
+			new Text( 'x' ),
+			doc.version
+		);
+
+		expect( op.position.stickiness ).to.equal( 'toNone' );
+	} );
+
 	it( 'should insert text node', () => {
 		model.applyOperation(
 			new InsertOperation(