Divec has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/88260


Change subject: Fix initialisation errors in EventSequencer
......................................................................

Fix initialisation errors in EventSequencer

ve.EventSequencer.js:
* Initialise listener lists to []
* Call afterLoop listeners even if there are no after listeners

Change-Id: I63a0bafa74f2c3135bd3ca75adc91a57c19319ed
---
M modules/ve/ve.EventSequencer.js
1 file changed, 8 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/60/88260/1

diff --git a/modules/ve/ve.EventSequencer.js b/modules/ve/ve.EventSequencer.js
index d1517e4..953657d 100644
--- a/modules/ve/ve.EventSequencer.js
+++ b/modules/ve/ve.EventSequencer.js
@@ -91,6 +91,7 @@
                eventName = eventNames[i];
                this.onListenersForEvent[eventName] = [];
                this.afterListenersForEvent[eventName] = [];
+               this.afterOneListenersForEvent[eventName] = [];
                this.eventHandlers[eventName] = makeEventHandler( eventName );
        }
 
@@ -228,9 +229,11 @@
                onListener = this.onListenersForEvent[eventName][i];
                onListener( ev );
        }
-       // Queue a call to afterEvent only if there are some 
afterListeners/afterOneListeners
+       // Queue a call to afterEvent only if there are some
+       // afterListeners/afterOneListeners/afterLoopListeners
        if ( this.afterListenersForEvent[eventName].length > 0 ||
-               this.afterOneListenersForEvent[eventName].length > 0 ) {
+               this.afterOneListenersForEvent[eventName].length > 0 ||
+               this.afterLoopListeners.length > 0 ) {
                // Create a cancellable pending call
                // - Create the pendingCall object first
                // - then create the setTimeout invocation to modify 
pendingCall.id
@@ -296,7 +299,7 @@
  * @param {number} myTimeoutId The calling setTimeout id
  */
 ve.EventSequencer.prototype.doAfterLoop = function ( myTimeoutId ) {
-       var i, len, afterLoopListeners, afterOneLoopListeners;
+       var i, len, afterLoopListeners, afterLoopOneListeners;
 
        if ( this.afterLoopTimeoutId !== myTimeoutId ) {
                // cancelled; do nothing
@@ -307,8 +310,8 @@
        // Snapshot the listener lists, and blank *OneListener list.
        // This ensures reasonable behaviour if a function called adds another 
listener.
        afterLoopListeners = this.afterLoopListeners.slice();
-       afterOneLoopListeners = this.afterOneLoopListeners.slice();
-       this.afterOneLoopListeners.length = 0;
+       afterLoopOneListeners = this.afterLoopOneListeners.slice();
+       this.afterLoopOneListeners.length = 0;
 
        for ( i = 0, len = this.afterLoopListeners.length; i < len; i++ ) {
                this.afterLoopListeners[i]();

-- 
To view, visit https://gerrit.wikimedia.org/r/88260
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I63a0bafa74f2c3135bd3ca75adc91a57c19319ed
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Divec <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to