Use event handling of OpenLayers.Event, not the native one.
Also includes some of the fixes suggested by @bartvde.
This commit is contained in:
@@ -77,39 +77,20 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({
|
||||
}
|
||||
OpenLayers.Util.extend(this, options);
|
||||
|
||||
this._buttonClick = OpenLayers.Function.bindAsEventListener(
|
||||
this.buttonClick, this
|
||||
);
|
||||
this.observe();
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: observe
|
||||
*/
|
||||
observe: function() {
|
||||
for (var i=this.events.length-1; i>=0; --i) {
|
||||
OpenLayers.Event.observe(
|
||||
this.target.element, this.events[i], this._buttonClick
|
||||
);
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: stopObserving
|
||||
*/
|
||||
stopObserving: function() {
|
||||
for (var i=this.events.length-1; i>=0; --i) {
|
||||
OpenLayers.Event.stopObserving(
|
||||
this.target.element, this.events[i], this._buttonClick
|
||||
);
|
||||
this.target.register(this.events[i], this, this.buttonClick, {
|
||||
extension: true
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Method: destroy
|
||||
*/
|
||||
destroy: function() {
|
||||
this.stopObserving()
|
||||
for (var i=this.events.length-1; i>=0; --i) {
|
||||
this.target.unregister(this.events[i], this, this.buttonClick);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -120,8 +101,9 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({
|
||||
* evt - {Event}
|
||||
*/
|
||||
buttonClick: function(evt) {
|
||||
if (OpenLayers.Event.isLeftClick(evt) || !~evt.type.indexOf("mouse")) {
|
||||
var element = OpenLayers.Event.element(evt);
|
||||
var propagate = true,
|
||||
element = OpenLayers.Event.element(evt);
|
||||
if (element && (OpenLayers.Event.isLeftClick(evt) || !~evt.type.indexOf("mouse"))) {
|
||||
if (OpenLayers.Element.hasClass(element, "olAlphaImg")) {
|
||||
element = element.parentNode;
|
||||
}
|
||||
@@ -135,16 +117,19 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({
|
||||
if (this.cancelRegEx.test(evt.type)) {
|
||||
delete this._buttonStarted;
|
||||
}
|
||||
OpenLayers.Event.stop(evt, false, true);
|
||||
OpenLayers.Event.stop(evt, false);
|
||||
propagate = false;
|
||||
}
|
||||
if (this.startRegEx.test(evt.type)) {
|
||||
this._buttonStarted = true;
|
||||
OpenLayers.Event.stop(evt, false, true);
|
||||
OpenLayers.Event.stop(evt, false);
|
||||
propagate = false;
|
||||
}
|
||||
} else {
|
||||
delete this._buttonStarted;
|
||||
}
|
||||
}
|
||||
return propagate;
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user