Переглянути джерело

Improvements in ReinsertOperation.

Szymon Cofalik 9 роки тому
батько
коміт
81c91a332d

+ 11 - 8
packages/ckeditor5-engine/src/treemodel/operation/reinsertoperation.js

@@ -21,18 +21,21 @@ import RemoveOperation from './removeoperation.js';
  * @extends core.treeModel.operation.Operation
  */
 export default class ReinsertOperation extends MoveOperation {
-	/**
-	 * @returns {core.treeModel.operation.RemoveOperation}
-	 */
-	getReversed() {
-		return new RemoveOperation( this.targetPosition, this.howMany, this.baseVersion + 1 );
+	get position() {
+		return this.targetPosition;
+	}
+
+	set position( pos ) {
+		this.targetPosition = pos;
 	}
 
 	get type() {
 		return 'reinsert';
 	}
-
-	get isSticky() {
-		return false;
+	/**
+	 * @returns {core.treeModel.operation.RemoveOperation}
+	 */
+	getReversed() {
+		return new RemoveOperation( this.targetPosition, this.howMany, this.baseVersion + 1 );
 	}
 }

+ 8 - 0
packages/ckeditor5-engine/tests/treemodel/operation/reinsertoperation.js

@@ -32,6 +32,14 @@ describe( 'ReinsertOperation', () => {
 		);
 	} );
 
+	it( 'should have position property equal to the position where node will be reinserted', () => {
+		expect( operation.position.isEqual( rootPosition ) ).to.be.true;
+
+		// Setting also works:
+		operation.position = new Position( root, [ 1 ] );
+		expect( operation.position.isEqual( new Position( root, [ 1 ] ) ) ).to.be.true;
+	} );
+
 	it( 'should have proper type', () => {
 		expect( operation.type ).to.equal( 'reinsert' );
 	} );