From 00d6f66c06a8e58a0cfbbb2734b11767d901e586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 12 Dec 2007 20:08:49 +0000 Subject: [PATCH] removeLayer must reset layers z-index. Thanks tschaub for the review and the new patch. (closes #1090) git-svn-id: http://svn.openlayers.org/trunk/openlayers@5386 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Map.js | 14 ++++++++++++++ tests/test_Map.html | 21 ++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index eec24f08f4..8ff9b34aa9 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -632,6 +632,17 @@ OpenLayers.Map = OpenLayers.Class({ + zIdx * 5 ); }, + /** + * Method: resetLayersZIndex + * Reset each layer's z-index based on layer's array index + */ + resetLayersZIndex: function() { + for (var i = 0; i < this.layers.length; i++) { + var layer = this.layers[i]; + this.setLayerZIndex(layer, i); + } + }, + /** * APIMethod: addLayer * @@ -740,6 +751,9 @@ OpenLayers.Map = OpenLayers.Class({ } } } + + this.resetLayersZIndex(); + this.events.triggerEvent("removelayer"); }, diff --git a/tests/test_Map.html b/tests/test_Map.html index df6f5c1666..e7a33a16b9 100644 --- a/tests/test_Map.html +++ b/tests/test_Map.html @@ -602,7 +602,8 @@ layers: layers, baseLayer: layers[0], layerContainerDiv: {removeChild: f}, - events: {triggerEvent: f} + events: {triggerEvent: f}, + resetLayersZIndex: function() {} }; OpenLayers.Map.prototype.removeLayer.apply(map, [map.baseLayer, false]); t.eq(map.baseLayer, null, @@ -638,6 +639,24 @@ "correct resolution after removal"); } + function test_Map_removeLayer_zindex(t) { + t.plan(2); + + map = new OpenLayers.Map('map'); + + var layer0 = new OpenLayers.Layer('Test Layer 0', {isBaseLayer:true}); + var layer1 = new OpenLayers.Layer('Test Layer 1', {isBaseLayer:true}); + var layer2 = new OpenLayers.Layer('Test Layer 2', {isBaseLayer:false}); + + map.addLayers([layer0, layer1, layer2]); + map.removeLayer(layer0); + + t.eq(parseInt(layer1.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'], + "correct z-index after removeLayer"); + t.eq(parseInt(layer2.div.style.zIndex), map.Z_INDEX_BASE['Overlay'] + 5, + "correct z-index after removeLayer"); + } + function test_13_Map_setBaseLayer_after_pan (t) { t.plan(1);