diff --git a/lib/OpenLayers/Control/SelectFeature.js b/lib/OpenLayers/Control/SelectFeature.js index e752eca6da..2336b24929 100644 --- a/lib/OpenLayers/Control/SelectFeature.js +++ b/lib/OpenLayers/Control/SelectFeature.js @@ -161,7 +161,8 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, { feature.originalStyle = feature.style; } this.layer.selectedFeatures.push(feature); - this.layer.drawFeature(feature, this.selectStyle); + feature.style = this.selectStyle; + this.layer.drawFeature(feature); this.onSelect(feature); }, @@ -175,10 +176,10 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, { */ unselect: function(feature) { // Store feature style for restoration later - if(feature.originalStyle == null) { - feature.originalStyle = feature.style; + if(feature.originalStyle != null) { + feature.style = feature.originalStyle; } - this.layer.drawFeature(feature, feature.originalStyle); + this.layer.drawFeature(feature); OpenLayers.Util.removeItem(this.layer.selectedFeatures, feature); this.onUnselect(feature); }, diff --git a/tests/Control/test_SelectFeature.html b/tests/Control/test_SelectFeature.html index 099e571353..c6b5c5258a 100644 --- a/tests/Control/test_SelectFeature.html +++ b/tests/Control/test_SelectFeature.html @@ -32,6 +32,21 @@ } + function test_Control_SelectFeature_select(t) { + t.plan(2); + var map = new OpenLayers.Map("map"); + var layer = new OpenLayers.Layer.Vector(); + map.addLayer(layer); + var control = new OpenLayers.Control.SelectFeature(layer); + var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0,0)); + layer.addFeatures(feature); + layer.drawFeature = function() { } + control.select(feature); + t.eq(feature.style.strokeColor, OpenLayers.Feature.Vector.style['select'].strokeColor, "feature style is set to select style"); + control.unselect(feature); + t.eq(feature.style.strokeColor, OpenLayers.Feature.Vector.style['default'].strokeColor, "feature style is set back to old style"); + } + function test_Control_SelectFeature_activate(t) { t.plan(2); var map = new OpenLayers.Map("map");