|
|
@@ -2347,6 +2347,39 @@ describe( 'Writer', () => {
|
|
|
} );
|
|
|
} );
|
|
|
|
|
|
+ describe( 'overrideSelectionGravity()', () => {
|
|
|
+ it( 'should use DocumentSelection#_overrideGravity', () => {
|
|
|
+ const overrideGravitySpy = sinon.spy( DocumentSelection.prototype, '_overrideGravity' );
|
|
|
+
|
|
|
+ overrideSelectionGravity();
|
|
|
+
|
|
|
+ sinon.assert.calledOnce( overrideGravitySpy );
|
|
|
+ overrideGravitySpy.restore();
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should not get attributes from the node before the caret when gravity is overridden', () => {
|
|
|
+ const root = doc.createRoot();
|
|
|
+ root.appendChildren( [
|
|
|
+ new Text( 'foo', { foo: true } ),
|
|
|
+ new Text( 'bar', { foo: true, bar: true } ),
|
|
|
+ new Text( 'biz', { foo: true } )
|
|
|
+ ] );
|
|
|
+
|
|
|
+ setSelection( new Position( root, [ 6 ] ) );
|
|
|
+
|
|
|
+ expect( Array.from( model.document.selection.getAttributeKeys() ) ).to.deep.equal( [ 'foo', 'bar' ] );
|
|
|
+
|
|
|
+ overrideSelectionGravity();
|
|
|
+
|
|
|
+ expect( Array.from( model.document.selection.getAttributeKeys() ) ).to.deep.equal( [ 'foo' ] );
|
|
|
+
|
|
|
+ // Disable override by moving selection.
|
|
|
+ setSelection( new Position( root, [ 5 ] ) );
|
|
|
+
|
|
|
+ expect( Array.from( model.document.selection.getAttributeKeys() ) ).to.deep.equal( [ 'foo', 'bar' ] );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+
|
|
|
function createText( data, attributes ) {
|
|
|
return model.change( writer => {
|
|
|
return writer.createText( data, attributes );
|
|
|
@@ -2506,4 +2539,10 @@ describe( 'Writer', () => {
|
|
|
writer.removeSelectionAttribute( key );
|
|
|
} );
|
|
|
}
|
|
|
+
|
|
|
+ function overrideSelectionGravity() {
|
|
|
+ model.change( writer => {
|
|
|
+ writer.overrideSelectionGravity();
|
|
|
+ } );
|
|
|
+ }
|
|
|
} );
|