OpenLayers OpenLayers

Ticket #621: events.4.patch

File events.4.patch, 1.6 kB (added by tschaub, 2 years ago)

alternative events patch - less voodoo

  • lib/OpenLayers/Events.js

    old new  
    9696                            : OpenLayers.Util.getElement(elementParam).id; 
    9797 
    9898        var elementObservers = OpenLayers.Event.observers[elementId]; 
    99         if (elementObservers) { 
    100             var i=0; 
    101             while(i < elementObservers.length) { 
    102                 var entry = elementObservers[0]; 
     99        var count = 0; 
     100        if (elementObservers && elementId) { 
     101            for(var i=elementObservers.length-1; i>=0; --i) { 
     102                var entry = elementObservers[i]; 
    103103                var args = new Array(entry.element, 
    104104                                     entry.name, 
    105105                                     entry.observer, 
    106106                                     entry.useCapture); 
    107107                var removed = OpenLayers.Event.stopObserving.apply(this, args); 
    108108                if (!removed) { 
    109                     i++; 
     109                    count++; 
    110110                } 
    111111            } 
    112112        } 
     113        return count; 
    113114    }, 
    114115 
    115116    /** Cycle through all the element entries in the events cache and call 
     
    125126 
    126127  observe: function(elementParam, name, observer, useCapture) { 
    127128    var element = OpenLayers.Util.getElement(elementParam); 
     129     
     130    // We need an ID to ensure we can properly de-register events for this  
     131    // element later.  
     132    if (!element.id) { 
     133        element.id = OpenLayers.Util.createUniqueID("OpenLayers_Events_generated_"); 
     134    }     
     135     
    128136    useCapture = useCapture || false; 
    129137 
    130138    if (name == 'keypress' &&