Ver Fonte

Fixed: clear infinite loop counter after user interaction.

Szymon Cofalik há 9 anos atrás
pai
commit
43345e24ba

+ 14 - 0
packages/ckeditor5-engine/src/view/observer/selectionobserver.js

@@ -102,6 +102,9 @@ export default class SelectionObserver extends Observer {
 		}
 
 		domDocument.addEventListener( 'selectionchange', () => this._handleSelectionChange( domDocument ) );
+		domDocument.addEventListener( 'keydown', () => this._clearInfiniteLoop() );
+		domDocument.addEventListener( 'mousemove', () => this._clearInfiniteLoop() );
+		domDocument.addEventListener( 'mousedown', () => this._clearInfiniteLoop() );
 
 		this._documents.add( domDocument );
 	}
@@ -181,6 +184,17 @@ export default class SelectionObserver extends Observer {
 
 		return false;
 	}
+
+	/**
+	 * Clears `SelectionObserver` internal properties connected with preventing infinite loop.
+	 *
+	 * @private
+	 */
+	_clearInfiniteLoop() {
+		this._lastSelection = null;
+		this._lastButOneSelection = null;
+		this._loopbackCounter = 0;
+	}
 }
 
 /**