do not reuse event objects to avoid incorrect event types. r=bartvde (closes #3280)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11958 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -232,6 +232,9 @@ OpenLayers.Control.TransformFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
this.dragControl.deactivate();
|
||||
deactivated = true;
|
||||
}
|
||||
if (deactivated) {
|
||||
this.unsetFeature();
|
||||
}
|
||||
return deactivated;
|
||||
},
|
||||
|
||||
@@ -265,13 +268,15 @@ OpenLayers.Control.TransformFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
scale: 1,
|
||||
ratio: 1
|
||||
});
|
||||
var evt = {feature: feature};
|
||||
|
||||
var oldRotation = this.rotation;
|
||||
var oldCenter = this.center;
|
||||
OpenLayers.Util.extend(this, initialParams);
|
||||
|
||||
if(this.events.triggerEvent("beforesetfeature", evt) === false) {
|
||||
var cont = this.events.triggerEvent("beforesetfeature",
|
||||
{feature: feature}
|
||||
);
|
||||
if (cont === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -303,7 +308,23 @@ OpenLayers.Control.TransformFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
delete this._setfeature;
|
||||
|
||||
this.events.triggerEvent("setfeature", evt);
|
||||
this.events.triggerEvent("setfeature", {feature: feature});
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: unsetFeature
|
||||
* Remove the transformation box off any feature.
|
||||
* If the control is active, it will be deactivated first.
|
||||
*/
|
||||
unsetFeature: function() {
|
||||
if (this.active) {
|
||||
this.deactivate();
|
||||
} else {
|
||||
this.feature = null;
|
||||
this.rotation = 0;
|
||||
this.scale = 1;
|
||||
this.ratio = 1;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
}
|
||||
|
||||
function test_setFeature(t) {
|
||||
t.plan(4);
|
||||
t.plan(6);
|
||||
var map = new OpenLayers.Map("map", {allOverlays: true});
|
||||
var layer = new OpenLayers.Layer.Vector();
|
||||
var feature = new OpenLayers.Feature.Vector(
|
||||
@@ -64,8 +64,16 @@
|
||||
map.setCenter(new OpenLayers.LonLat(0, 0), 18);
|
||||
var control = new OpenLayers.Control.TransformFeature(layer);
|
||||
map.addControl(control);
|
||||
var log = [];
|
||||
control.events.on({
|
||||
"beforesetfeature": function(e) { log.push(e); },
|
||||
"setfeature": function(e) { log.push(e); }
|
||||
});
|
||||
control.setFeature(feature);
|
||||
|
||||
t.eq(log[0].type, "beforesetfeature", "beforesetfeature event fired with correct event type");
|
||||
t.eq(log[1].type, "setfeature", "setfeature event fired with correct event type");
|
||||
|
||||
t.ok(control.active, "control activated on setFeature");
|
||||
t.ok(feature.geometry.getBounds().equals(control.box.geometry.getBounds()), "box positioned correctly");
|
||||
t.geom_eq(control.handles[0].geometry, control.box.geometry.components[0], "handle positioned with box");
|
||||
|
||||
Reference in New Issue
Block a user