Maciej Bukowski 6 anni fa
parent
commit
5050827cf2

+ 17 - 16
packages/ckeditor5-engine/src/view/view.js

@@ -184,22 +184,6 @@ export default class View {
 	}
 
 	/**
-	 * Disables or enables rendering. If the flag is set to `true` then the rendering will be disabled.
-	 * If the flag is set to `false` and if there was some change in the meantime, then the rendering action will be performed.
-	 *
-	 * @protected
-	 * @param {Boolean} flag A flag indicates whether the rendering should be disabled.
-	 */
-	_disableRendering( flag ) {
-		this._renderingDisabled = flag;
-
-		if ( flag == false ) {
-			// Render when you stop blocking rendering.
-			this.change( () => {} );
-		}
-	}
-
-	/**
 	 * Attaches DOM root element to the view element and enable all observers on that element.
 	 * Also {@link module:engine/view/renderer~Renderer#markToSync mark element} to be synchronized with the view
 	 * what means that all child nodes will be removed and replaced with content of the view root.
@@ -588,6 +572,23 @@ export default class View {
 	}
 
 	/**
+	 * Disables or enables rendering. If the flag is set to `true` then the rendering will be disabled.
+	 * If the flag is set to `false` and if there was some change in the meantime, then the rendering action will be performed.
+	 *
+	 * @protected
+	 * @param {Boolean} flag A flag indicates whether the rendering should be disabled.
+	 */
+	_disableRendering( flag ) {
+		this._renderingDisabled = flag;
+
+		if ( flag == false ) {
+			// Render when you stop blocking rendering.
+			this.change( () => {} );
+		}
+	}
+
+
+	/**
 	 * Renders all changes. In order to avoid triggering the observers (e.g. mutations) all observers are disabled
 	 * before rendering and re-enabled after that.
 	 *

+ 6 - 4
packages/ckeditor5-engine/tests/view/observer/focusobserver.js

@@ -58,7 +58,8 @@ describe( 'FocusObserver', () => {
 		} );
 
 		it( 'should render document after blurring', () => {
-			const renderSpy = sinon.spy( view, 'render' );
+			const renderSpy = sinon.spy();
+			view.on( 'render', renderSpy );
 
 			observer.onDomEvent( { type: 'blur', target: document.body } );
 
@@ -122,7 +123,8 @@ describe( 'FocusObserver', () => {
 		} );
 
 		it( 'should delay rendering by 50ms', () => {
-			const renderSpy = sinon.spy( view, 'render' );
+			const renderSpy = sinon.spy();
+			view.on( 'render', renderSpy );
 			const clock = sinon.useFakeTimers();
 
 			observer.onDomEvent( { type: 'focus', target: domMain } );
@@ -167,7 +169,7 @@ describe( 'FocusObserver', () => {
 			const renderSpy = sinon.spy();
 
 			setData( view, '<div contenteditable="true">foo bar</div>' );
-			view.render();
+			view.forceRender();
 
 			viewDocument.on( 'selectionChange', selectionChangeSpy );
 			view.on( 'render', renderSpy );
@@ -188,7 +190,7 @@ describe( 'FocusObserver', () => {
 			const renderSpy = sinon.spy();
 
 			setData( view, '<div contenteditable="true">foo bar</div>' );
-			view.render();
+			view.forceRender();
 			const domEditable = domRoot.childNodes[ 0 ];
 
 			viewDocument.on( 'selectionChange', selectionChangeSpy );

+ 3 - 2
packages/ckeditor5-engine/tests/view/observer/selectionobserver.js

@@ -311,6 +311,7 @@ describe( 'SelectionObserver', () => {
 		const domParagraph = domMain.childNodes[ 0 ];
 		const domText = domParagraph.childNodes[ 0 ];
 		const domUI = domParagraph.childNodes[ 1 ];
+		const viewRenderSpy = sinon.spy();
 
 		// Add rendering on selectionChange event to check this feature.
 		viewDocument.on( 'selectionChange', () => {
@@ -330,7 +331,7 @@ describe( 'SelectionObserver', () => {
 
 			selectionObserver.listenTo( domDocument, 'selectionchange', () => {
 				// 4. Check if view was re-rendered.
-				expect( view.render.called ).to.be.true;
+				sinon.assert.calledOnce( viewRenderSpy );
 
 				done();
 			}, { priority: 'lowest' } );
@@ -339,7 +340,7 @@ describe( 'SelectionObserver', () => {
 			// Current and new selection position are similar in view (but not equal!).
 			// Also add a spy to `viewDocument#render` to see if view will be re-rendered.
 			sel.collapse( domUI, 0 );
-			sinon.spy( view, 'render' );
+			view.on( 'render', viewRenderSpy );
 
 			// Some browsers like Safari won't allow to put selection inside empty ui element.
 			// In that situation selection should stay in correct place.