make SelectControl.unselectAll safer, use @ahocevar's implementation

This commit is contained in:
Éric Lemoine
2012-05-30 09:00:42 +02:00
parent e603b06715
commit 976554fc82

View File

@@ -300,18 +300,17 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
*/ */
unselectAll: function(options) { unselectAll: function(options) {
// we'll want an option to supress notification here // we'll want an option to supress notification here
var layers = this.layers || [this.layer]; var layers = this.layers || [this.layer],
var layer, feature; layer, feature, l, numExcept;
for(var l=0; l<layers.length; ++l) { for(l=0; l<layers.length; ++l) {
layer = layers[l]; layer = layers[l];
for(var i=layer.selectedFeatures.length-1; i>=0; --i) { numExcept = 0;
feature = layer.selectedFeatures[i]; while(layer.selectedFeatures.length > numExcept) {
// feature can be undefined here if an unselectfeature feature = layer.selectedFeatures[numExcept];
// listeners has unselected or removed other features if(!options || options.except != feature) {
if(feature) { this.unselect(feature);
if(!options || options.except != feature) { } else {
this.unselect(feature); ++numExcept;
}
} }
} }
} }