Changeset 8308

Show
Ignore:
Timestamp:
04/26/07 11:12:28 (19 months ago)
Author:
sjmiles
Message:

Make sure stealth onkeydown listeners are disconnected with their progenitors. Fixes last known missing requirement for event.js. Refs #2641

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • dojo/trunk/_base/event.js

    r8299 r8308  
    271271                                if(!node){return;} // undefined 
    272272                                event = de._normalizeEventName(event); 
    273                                 // FIXME: we need a way to disconnect this extra listener 
    274                                 if(node && (event=="onkeypress")){ 
    275                                         de.addListener(node, "onkeydown", de._nop); 
    276                                 } 
    277                                 return iel.add(node, event, de._fixCallback(fp)); 
     273                                var handle = iel.add(node, event, de._fixCallback(fp)); 
     274                                if(event=="onkeypress"){ 
     275                                        // FIXME: we are using the knowledge that handle 
     276                                        // is an Integer, which is supposed to be private. 
     277                                        // Perhaps the listener could natively return a  
     278                                        // Number object instead of a concrete value. 
     279                                        handle = new Number(handle); 
     280                                        handle.keydown = de.addListener(node, "onkeydown", de._nop); 
     281                                } 
     282                                return handle; 
    278283                        }, 
    279284                        removeListener: function(/*DOMNode*/node, /*String*/event, /*Handle*/handle){ 
    280285                                iel.remove(node, de._normalizeEventName(event), handle);  
     286                                if(handle.keydown){iel.remove(node, "onkeydown", handle.keydown);}  
    281287                        }, 
    282288                        _normalizeEventName: function(/*String*/eventName){