From 966d46fe824a121cbd83364a26b2567edb1be38c Mon Sep 17 00:00:00 2001 From: Michael Albertson Date: Wed, 8 Apr 2015 14:18:54 -0700 Subject: [PATCH] Added a condition for if toggle is turned on. Fixed an issue and added a test. --- lib/OpenLayers/Control/SelectFeature.js | 3 +++ tests/Control/SelectFeature.html | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/OpenLayers/Control/SelectFeature.js b/lib/OpenLayers/Control/SelectFeature.js index dcec807d7a..d3948925a2 100644 --- a/lib/OpenLayers/Control/SelectFeature.js +++ b/lib/OpenLayers/Control/SelectFeature.js @@ -592,6 +592,9 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, { if (OpenLayers.Util.indexOf(layer.selectedFeatures, feature) == -1) { this.select(feature); } + else if (this.toggleSelect()) { + this.unselect(feature); + } } } } diff --git a/tests/Control/SelectFeature.html b/tests/Control/SelectFeature.html index 92d3a7edf9..0c1a1e3a0d 100644 --- a/tests/Control/SelectFeature.html +++ b/tests/Control/SelectFeature.html @@ -214,6 +214,29 @@ t.ok(firesBoxselectionend,"selectBox fires boxselectionend event"); t.eq(afterSelectingNumberOfFeatures,1,"boxselectionend fires after feature selected"); } + function test_selectBox_toggle(t) { + t.plan(2); + var map = new OpenLayers.Map("map"); + var layer1 = new OpenLayers.Layer.Vector(); + map.addLayer(layer1); + map.setBaseLayer(layer1); + var layer2 = new OpenLayers.Layer.Vector(); + map.addLayer(layer2); + map.setCenter(new OpenLayers.LonLat(1,1)); + var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,1)); + layer1.addFeatures([feature]); + var control = new OpenLayers.Control.SelectFeature(layer1, {toggle: true, multiple: true}); + control.setMap(map); + map.getLonLatFromPixel = function(arg) { + return new OpenLayers.LonLat(arg.x, arg.y); + }; + control.activate(); + var bounds = new OpenLayers.Bounds(-1,-1,2,2); + control.selectBox(bounds); + t.eq(layer1.selectedFeatures.length, 1, "selectBox toggles the selected item."); + control.selectBox(bounds); + t.eq(layer1.selectedFeatures.length, 0, "selectBox toggles the selected item."); + } function test_Control_SelectFeature_activate(t) { t.plan(4); var map = new OpenLayers.Map("map");