diff --git a/src/view/renderer.js b/src/view/renderer.js index e2f7435a4..a6b270ea4 100644 --- a/src/view/renderer.js +++ b/src/view/renderer.js @@ -101,13 +101,6 @@ export default class Renderer { */ this.isFocused = false; - /** - * Indicates if the composition is in progress inside the view document view. - * - * @member {Boolean} - */ - this.isComposing = false; - /** * The text node in which the inline filler was rendered. * @@ -769,11 +762,6 @@ export default class Renderer { * @returns {Boolean} */ _domSelectionNeedsUpdate( domSelection ) { - // Remain DOM selection untouched while composing. See #1782. - if ( this.isComposing ) { - return false; - } - if ( !this.domConverter.isDomSelectionCorrect( domSelection ) ) { // Current DOM selection is in incorrect position. We need to update it. return true; diff --git a/src/view/view.js b/src/view/view.js index 31735865d..86b59fa3a 100644 --- a/src/view/view.js +++ b/src/view/view.js @@ -105,7 +105,6 @@ export default class View { */ this._renderer = new Renderer( this.domConverter, this.document.selection ); this._renderer.bind( 'isFocused' ).to( this.document ); - this._renderer.bind( 'isComposing' ).to( this.document ); /** * A DOM root attributes cache. It saves the initial values of DOM root attributes before the DOM element diff --git a/tests/view/renderer.js b/tests/view/renderer.js index 2c9f15078..cba6bd4c2 100644 --- a/tests/view/renderer.js +++ b/tests/view/renderer.js @@ -3706,48 +3706,6 @@ describe( 'Renderer', () => { return viewData.repeat( repeat ); } } ); - - // #1782 - it( 'should leave dom selection untouched while composing', () => { - const { view: viewP, selection: newSelection } = parse( '[]' ); - - viewRoot._appendChild( viewP ); - selection._setTo( newSelection ); - - renderer.markToSync( 'children', viewRoot ); - renderer.render(); - - // Mock IME typing in Safari:

[c]

. - renderer.isComposing = true; - const domText = document.createTextNode( 'c' ); - domRoot.firstChild.appendChild( domText ); - const range = document.createRange(); - range.setStart( domText, 0 ); - range.setEnd( domText, 1 ); - const domSelection = document.getSelection(); - domSelection.removeAllRanges(); - domSelection.addRange( range ); - - // c[] - viewP._appendChild( new ViewText( 'c' ) ); - selection._setTo( [ - new ViewRange( new ViewPosition( viewP.getChild( 0 ), 1 ), new ViewPosition( viewP.getChild( 0 ), 1 ) ) - ] ); - - renderer.markToSync( 'children', viewP ); - renderer.render(); - - expect( domRoot.childNodes.length ).to.equal( 1 ); - expect( domRoot.firstChild.childNodes.length ).to.equal( 1 ); - expect( domRoot.firstChild.firstChild.data ).to.equal( 'c' ); - - const currentRange = domSelection.getRangeAt( 0 ); - expect( currentRange.collapsed ).to.equal( false ); - expect( currentRange.startContainer ).to.equal( domRoot.firstChild.firstChild ); - expect( currentRange.startOffset ).to.equal( 0 ); - expect( currentRange.endContainer ).to.equal( domRoot.firstChild.firstChild ); - expect( currentRange.endOffset ).to.equal( 1 ); - } ); } ); describe( '#922', () => {