Explorar o código

EnterObserver passes "isSoft" option in the event object.

Kamil Piechaczek %!s(int64=7) %!d(string=hai) anos
pai
achega
da6180d844

+ 4 - 2
packages/ckeditor5-enter/src/enterobserver.js

@@ -23,12 +23,14 @@ export default class EnterObserver extends Observer {
 		const document = this.document;
 
 		document.on( 'keydown', ( evt, data ) => {
-			if ( this.isEnabled && data.keyCode == keyCodes.enter && !data.shiftKey ) {
+			if ( this.isEnabled && data.keyCode == keyCodes.enter ) {
 				// Save the event object to check later if it was stopped or not.
 				let event;
 				document.once( 'enter', evt => ( event = evt ), { priority: 'highest' } );
 
-				document.fire( 'enter', new DomEventData( document, data.domEvent ) );
+				document.fire( 'enter', new DomEventData( document, data.domEvent, {
+					isSoft: data.shiftKey
+				} ) );
 
 				// Stop `keydown` event if `enter` event was stopped.
 				// https://github.com/ckeditor/ckeditor5/issues/753

+ 10 - 7
packages/ckeditor5-enter/tests/enterobserver.js

@@ -35,32 +35,35 @@ describe( 'EnterObserver', () => {
 			viewDocument.on( 'enter', spy );
 
 			viewDocument.fire( 'keydown', new DomEventData( viewDocument, getDomEvent(), {
-				keyCode: getCode( 'enter' )
+				keyCode: getCode( 'enter' ),
+				shiftKey: false
 			} ) );
 
 			expect( spy.calledOnce ).to.be.true;
+			expect( spy.firstCall.args[ 1 ].isSoft ).to.be.false;
 		} );
 
-		it( 'is not fired on keydown when keyCode does not match enter', () => {
+		it( 'detects whether shift was pressed along with the "enter" key', () => {
 			const spy = sinon.spy();
 
 			viewDocument.on( 'enter', spy );
 
 			viewDocument.fire( 'keydown', new DomEventData( viewDocument, getDomEvent(), {
-				keyCode: 1
+				keyCode: getCode( 'enter' ),
+				shiftKey: true
 			} ) );
 
-			expect( spy.calledOnce ).to.be.false;
+			expect( spy.calledOnce ).to.be.true;
+			expect( spy.firstCall.args[ 1 ].isSoft ).to.be.true;
 		} );
 
-		it( 'is not fired on keydown when shiftKey is truthy', () => {
+		it( 'is not fired on keydown when keyCode does not match enter', () => {
 			const spy = sinon.spy();
 
 			viewDocument.on( 'enter', spy );
 
 			viewDocument.fire( 'keydown', new DomEventData( viewDocument, getDomEvent(), {
-				keyCode: getCode( 'enter' ),
-				shiftKey: true
+				keyCode: 1
 			} ) );
 
 			expect( spy.calledOnce ).to.be.false;