fix broken register() on events r=tschaub (Closes #1502)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@7610 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
euzuro
2008-07-30 17:10:04 +00:00
parent 36d5f49f0d
commit 5ac8bd6a89
3 changed files with 86 additions and 19 deletions

View File

@@ -406,7 +406,6 @@ OpenLayers.Events = OpenLayers.Class({
initialize: function (object, element, eventTypes, fallThrough) {
this.object = object;
this.element = element;
this.eventTypes = eventTypes;
this.fallThrough = fallThrough;
this.listeners = {};
@@ -418,9 +417,10 @@ OpenLayers.Events = OpenLayers.Class({
// if eventTypes is specified, create a listeners list for each
// custom application event.
if (this.eventTypes != null) {
for (var i = 0; i < this.eventTypes.length; i++) {
this.addEventType(this.eventTypes[i]);
this.eventTypes = [];
if (eventTypes != null) {
for (var i = 0; i < eventTypes.length; i++) {
this.addEventType(eventTypes[i]);
}
}
@@ -457,6 +457,7 @@ OpenLayers.Events = OpenLayers.Class({
*/
addEventType: function(eventName) {
if (!this.listeners[eventName]) {
this.eventTypes.push(eventName);
this.listeners[eventName] = [];
}
},
@@ -532,16 +533,14 @@ OpenLayers.Events = OpenLayers.Class({
*/
register: function (type, obj, func) {
if (func != null &&
((this.eventTypes && OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ||
OpenLayers.Util.indexOf(this.BROWSER_EVENTS, type) != -1)) {
if ( (func != null) &&
(OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ) {
if (obj == null) {
obj = this.object;
}
var listeners = this.listeners[type];
if (listeners != null) {
listeners.push( {obj: obj, func: func} );
}
listeners.push( {obj: obj, func: func} );
}
},