8
0
Просмотр исходного кода

Introduced ViewSelection.isBackward property.

Piotr Jasiun 9 лет назад
Родитель
Сommit
14e50533de

+ 9 - 0
packages/ckeditor5-engine/src/treeview/selection.js

@@ -103,6 +103,15 @@ export default class Selection {
 		return this._ranges.length;
 	}
 
+	/**
+	 * Specifies whether the {@link engine.treeView.Selection#focus} precedes {@link engine.treeView.Selection#anchor}.
+	 *
+	 * @type {Boolean}
+	 */
+	get isBackward() {
+		return !this.isCollapsed && this._lastRangeBackward;
+	}
+
 	/**
 	 * Adds a range to the selection. Added range is copied. This means that passed range is not saved in the
 	 * selection instance and you can safely operate on it.

+ 21 - 0
packages/ckeditor5-engine/tests/treeview/selection.js

@@ -121,6 +121,27 @@ describe( 'Selection', () => {
 		} );
 	} );
 
+	describe( 'isBackward', () => {
+		it( 'is defined by the last added range', () => {
+			const range1 = Range.createFromParentsAndOffsets( el, 5, el, 10 );
+			const range2 = Range.createFromParentsAndOffsets( el, 15, el, 16 );
+
+			selection.addRange( range1, true );
+			expect( selection ).to.have.property( 'isBackward', true );
+
+			selection.addRange( range2 );
+			expect( selection ).to.have.property( 'isBackward', false );
+		} );
+
+		it( 'is false when last range is collapsed', () => {
+			const range = Range.createFromParentsAndOffsets( el, 5, el, 5 );
+
+			selection.addRange( range, true );
+
+			expect( selection.isBackward ).to.be.false;
+		} );
+	} );
+
 	describe( 'addRange', () => {
 		it( 'should add range to selection ranges', () => {
 			selection.addRange( range1 );