OpenLayers OpenLayers

Changeset 570

Show
Ignore:
Timestamp:
06/11/06 20:16:02 (3 years ago)
Author:
sderle
Message:

Refactored event handling to allow unregistration of event listeners.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Events.js

    r508 r570  
    5757    */ 
    5858    register: function (type, obj, func) { 
     59        if (func == null) { 
     60            obj = this.object; 
     61            func = obj; 
     62        } 
    5963        var listeners = this.listeners[type]; 
    60         listeners.push( func.bindAsEventListener(obj) ); 
     64        listeners.push( {obj: obj, func: func} ); 
    6165    }, 
    6266     
     67    unregister: function (type, obj, func) { 
     68        var listeners = this.listeners[type]; 
     69        for (var i = 0; i < listeners.length; i++) { 
     70            if (listeners[i].obj == obj && listeners[i].type == type) { 
     71                listeners.splice(i, 1); 
     72                break; 
     73            } 
     74        } 
     75    }, 
     76 
    6377    remove: function(type) { 
    6478        this.listeners[type].pop(); 
     
    101115        for (var i = 0; i < listeners.length; i++) { 
    102116            var callback = listeners[i]; 
    103             callback(evt); 
     117            var continueChain = callback.func.call(callback.obj, evt); 
     118            if (continueChain != null && !continueChain) break; 
    104119        } 
    105120    }