Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 6237

Show
Ignore:
Timestamp:
02/26/07 05:56:20 (2 years ago)
Author:
andrew
Message:

* Early return from applyToList.
* Minor syntax cleanup.
* Added Event.pointer for returning X/Y coordinates of the pointer (and redefined pointerX and pointerY to use it).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/branches/event/src/event.js

    r6205 r6237  
    3434    return event.which == 1 || event.button == 1; 
    3535  }, 
     36   
     37  pointer: function(event) { 
     38    var x = event.pageX || (event.clientX +  
     39      (document.documentElement.scrollLeft || document.body.scrollLeft)); 
     40    var y = event.pageY || (event.clientY +  
     41      (document.documentElement.scrollTop || document.body.scrollTop)); 
     42    return { x: x, y: y }; 
     43  }, 
    3644 
    3745  pointerX: function(event) { 
    38     return event.pageX || (event.clientX +  
    39       (document.documentElement.scrollLeft || document.body.scrollLeft)); 
     46    return Event.pointer(event).x; 
    4047  }, 
    4148 
    4249  pointerY: function(event) { 
    43     return event.pageY || (event.clientY +  
    44       (document.documentElement.scrollTop || document.body.scrollTop)); 
     50    return Event.pointer(event).y; 
    4551  }, 
    4652 
     
    6167}); 
    6268 
    63 Object.extend(Event, function() 
    64 
    65   var B = Prototype.Browser; 
    66    
    67   Observer = Class.create(); 
     69Object.extend(Event, function() { 
     70  var B = Prototype.Browser, Observer = Class.create(); 
    6871  Observer.guid = 1; 
    6972   
     
    108111  }); 
    109112 
    110   if (document.addEventListener) 
    111   { 
     113  if (document.addEventListener) { 
    112114    Object.extend(Observer.prototype, { 
    113115      _add: function() { 
     
    119121      } 
    120122    }); 
    121   } else if (B.IE) 
    122   { 
     123  } else if (B.IE) { 
    123124    Object.extend(Observer.prototype, { 
    124125      _add: function() { 
     
    141142      unloadCache: function() { 
    142143        for(var i=0, length = this.globalCache.length; i < length; i++) 
    143           this.globalCache[i].remove() 
     144          this.globalCache[i].remove(); 
    144145      }, 
    145146      /* adds standard DOM event model properties to IE's events */ 
    146147      extendEvent: function(event) { 
    147         event || (event = window.event); 
    148         return Object.extend(Object.extend(event, { 
    149             target: event.srcElement, 
    150             which:  event.button, 
    151             pageX:  Event.pointerX(event), 
    152             pageY:  Event.pointerY(event), 
    153             relatedTarget:   Event.relatedTarget(event) 
    154           }), 
    155           this.eventMethods 
    156         ); 
     148        event = event || window.event; 
     149        Object.extend(event, { 
     150          target: event.srcElement, 
     151          which:  event.button, 
     152          pageX:  Event.pointerX(event), 
     153          pageY:  Event.pointerY(event), 
     154          relatedTarget: Event.relatedTarget(event) 
     155        }); 
     156        return Object.extend(event, this.eventMethods); 
    157157      }, 
    158158      eventMethods: { 
    159         stopPropagation: function() { this.cancelBubble = true }, 
    160         preventDefault:  function() { this.returnValue = false }, 
    161         inspect: function() { return '[object Event]'
     159        stopPropagation: function() { this.cancelBubble = true; }, 
     160        preventDefault:  function() { this.returnValue = false; }, 
     161        inspect: function() { return '[object Event]';
    162162      } 
    163163    }); 
     
    169169  // applies the calling method to an array of elements 
    170170  function applyToList(args) { 
    171     if (args[0].constructor == Array) { 
    172       var method = args.callee; 
    173       args = $A(args); 
    174       args.shift().each(function(el){ 
    175         method.apply(null, [el].concat(args)); 
    176       }); 
    177       return true; // the calling method can end 
    178     } 
    179     return false; 
    180   } 
     171    if (args[0].constructor != Array) return false; 
     172    var method = args.callee; 
     173    args = $A(args); 
     174    args.shift().each(function(el){ 
     175      method.apply(null, [el].concat(args)); 
     176    }); 
     177    return true; // the calling method can end 
     178  }, 
    181179   
    182180  return { 
    183181    observe: function(element, type, observer, useCapture) { 
    184182      if (applyToList(arguments)) return; 
    185        
    186183      new Observer(element, type, observer, useCapture).add(); 
    187184    }, 
    188185    stopObserving: function(element, type, observer, useCapture) { 
    189186      if (applyToList(arguments)) return; 
    190        
    191187      new Observer(element, type, observer, useCapture).remove(); 
    192188    } 
    193   } 
     189  }; 
    194190}());