Merge pull request #529 from adv-isu/ControlSplitDeactivateFix

OpenLayers.Control.Split.deactivate event unregistration fix.
This commit is contained in:
Tim Schaub
2012-06-13 09:11:45 -07:00
2 changed files with 14 additions and 9 deletions
+1 -1
View File
@@ -240,7 +240,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, {
var deactivated = OpenLayers.Control.prototype.deactivate.call(this); var deactivated = OpenLayers.Control.prototype.deactivate.call(this);
if(deactivated) { if(deactivated) {
if(this.source && this.source.events) { if(this.source && this.source.events) {
this.layer.events.un({ this.source.events.un({
sketchcomplete: this.onSketchComplete, sketchcomplete: this.onSketchComplete,
afterfeaturemodified: this.afterFeatureModified, afterfeaturemodified: this.afterFeatureModified,
scope: this scope: this
+13 -8
View File
@@ -104,13 +104,18 @@
t.plan(7); t.plan(7);
var layer = new OpenLayers.Layer.Vector("foo", { var layer1 = new OpenLayers.Layer.Vector("foo", {
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
isBaseLayer: true isBaseLayer: true
}); });
var control = new OpenLayers.Control.Split({layer: layer}); var layer2 = new OpenLayers.Layer.Vector("bar", {
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
isBaseLayer: false
});
var control = new OpenLayers.Control.Split({layer: layer1});
var map = new OpenLayers.Map("map"); var map = new OpenLayers.Map("map");
map.addLayer(layer); map.addLayer(layer1);
map.addLayer(layer2);
map.zoomToMaxExtent(); map.zoomToMaxExtent();
map.addControl(control); map.addControl(control);
@@ -124,17 +129,17 @@
t.eq(control.handler.active, false, "sketch handler deactivated"); t.eq(control.handler.active, false, "sketch handler deactivated");
// set a source layer // set a source layer
control.setSource(layer); control.setSource(layer2);
// activate and check that listeners are registered // activate and check that listeners are registered
control.activate(); control.activate();
t.ok(layer.events.listeners.sketchcomplete, "sketchcomplete listener registered"); t.ok(layer2.events.listeners.sketchcomplete, "sketchcomplete listener registered");
t.ok(layer.events.listeners.afterfeaturemodified, "afterfeaturemodified listener registered"); t.ok(layer2.events.listeners.afterfeaturemodified, "afterfeaturemodified listener registered");
// deactivate and confirm no draw related events // deactivate and confirm no draw related events
control.deactivate(); control.deactivate();
t.eq(layer.events.listeners.sketchcomplete.length, 0, "no sketchcomplete listeners"); t.eq(layer2.events.listeners.sketchcomplete.length, 0, "no sketchcomplete listeners");
t.eq(layer.events.listeners.afterfeaturemodified.length, 0, "no afterfeaturemodified listeners"); t.eq(layer2.events.listeners.afterfeaturemodified.length, 0, "no afterfeaturemodified listeners");
map.destroy(); map.destroy();
} }