8
0
Maciej Bukowski 8 лет назад
Родитель
Сommit
7a23c00d25

+ 12 - 0
packages/ckeditor5-engine/src/model/documentselection.js

@@ -464,6 +464,18 @@ export default class DocumentSelection {
 		return this._selection.hasAttribute( key );
 	}
 
+	getSelectedBlocks() {
+		return this._selection.getSelectedBlocks.call( this );
+	}
+
+	containsEntireContent() {
+		return this._selection.containsEntireContent.call( this );
+	}
+
+	getLastPosition() {
+		return this._selection.getLastPosition.call( this );
+	}
+
 	/**
 	 * Generates and returns an attribute key for selection attributes store, basing on original attribute key.
 	 *

+ 4 - 2
packages/ckeditor5-engine/src/model/selection.js

@@ -302,7 +302,7 @@ export default class Selection {
 	 * @param {module:engine/model/selection~Selection|module:engine/model/position~Position|
 	 * Iterable.<module:engine/model/range~Range>|module:engine/model/range~Range|null} selectable
 	 */
-	setTo( selectable, isLastBackward = false ) {
+	setTo( selectable, backwardSelectionOrOffset ) {
 		if ( !selectable ) {
 			this.removeAllRanges();
 		} else if ( selectable instanceof Selection ) {
@@ -311,10 +311,12 @@ export default class Selection {
 			this.setRanges( [ selectable ] );
 		} else if ( isIterable( selectable ) ) {
 			// We assume that the selectable is an iterable of ranges.
-			this.setRanges( selectable, isLastBackward );
+			this.setRanges( selectable, backwardSelectionOrOffset );
 		} else if ( selectable instanceof Position ) {
 			// We assume that the selectable is a position.
 			this.setRanges( [ new Range( selectable ) ] );
+		} else if ( selectable instanceof Element ) {
+			this.setRanges( Position.createAt( selectable, backwardSelectionOrOffset ) );
 		} else {
 			throw new CKEditorError( 'model-selection-added-not-selectable' );
 		}

+ 2 - 2
packages/ckeditor5-engine/src/view/selection.js

@@ -439,8 +439,8 @@ export default class Selection {
 	 */
 	setTo( selectable ) {
 		if ( selectable instanceof Selection ) {
-			this._isFake = selectable._isFake;
-			this._fakeSelectionLabel = selectable._fakeSelectionLabel;
+			this._isFake = selectable.isFake;
+			this._fakeSelectionLabel = selectable.fakeSelectionLabel;
 			this.setRanges( selectable.getRanges(), selectable.isBackward );
 		} else if ( selectable instanceof Range ) {
 			this.setRanges( [ selectable ] );

+ 1 - 1
packages/ckeditor5-engine/tests/model/documentselection.js

@@ -239,7 +239,7 @@ describe( 'DocumentSelection', () => {
 			const spy = testUtils.sinon.spy( LiveRange.prototype, 'detach' );
 			selection._setTo( root );
 
-			expect( spy.calledTwice ).to.be.true;
+			sinon.assert.calledTwice( spy.calledTwice ).to.be.true;
 		} );
 	} );