diff --git a/lib/OpenLayers/Control/LayerSwitcher.js b/lib/OpenLayers/Control/LayerSwitcher.js index eea73cd8a3..32363f94db 100644 --- a/lib/OpenLayers/Control/LayerSwitcher.js +++ b/lib/OpenLayers/Control/LayerSwitcher.js @@ -197,6 +197,8 @@ OpenLayers.Control.LayerSwitcher = var layerState = this.layerStates[i]; var layer = this.map.layers[i]; if ( (layerState.name != layer.name) || + (layerState.inRange != layer.inRange) || + (layerState.id != layer.id) || (layerState.visibility != layer.visibility) ) { redraw = true; break; @@ -238,7 +240,9 @@ OpenLayers.Control.LayerSwitcher = var layer = this.map.layers[i]; this.layerStates[i] = { 'name': layer.name, - 'visibility': layer.visibility + 'visibility': layer.visibility, + 'inRange': layer.inRange, + 'id': layer.id }; } diff --git a/tests/Control/test_LayerSwitcher.html b/tests/Control/test_LayerSwitcher.html index 625913e6cc..3b61196c0a 100644 --- a/tests/Control/test_LayerSwitcher.html +++ b/tests/Control/test_LayerSwitcher.html @@ -65,7 +65,7 @@ function test_04_Control_LayerSwitcher_redraw (t) { - t.plan( 12 ); + t.plan( 19 ); map = new OpenLayers.Map('map'); var layer = new OpenLayers.Layer.WMS("WMS", @@ -95,12 +95,42 @@ t.eq(false, control.checkRedraw(), "check redraw is false"); control = new OpenLayers.Control.LayerSwitcher(); + var myredraw = control.redraw; control.redraw = function() { t.ok(true, "redraw called when setting vis"); } map.addControl(control); + var func = myredraw.bind(control); + func(); markers.setVisibility(false); t.eq(control.checkRedraw(), true, "check redraw is true after changing layer and not letting redraw happen."); + map.removeControl(control); + + control = new OpenLayers.Control.LayerSwitcher(); + var myredraw = control.redraw; + control.redraw = function() { + t.ok(true, "redraw called when setting inRange"); + } + map.addControl(control); + var func = myredraw.bind(control); + func(); + markers.inRange = false; + t.eq(control.checkRedraw(), true, "check redraw is true after changing layer.inRange and not letting redraw happen."); + map.removeControl(control); + + control = new OpenLayers.Control.LayerSwitcher(); + var myredraw = control.redraw; + control.redraw = function() { + t.ok(true, "redraw called when raising base layer "); + } + + map.addControl(control); + var func = myredraw.bind(control); + func(); + map.raiseLayer(layer, 1); + t.eq(control.checkRedraw(), true, "check redraw is true after changing layer.inRange and not letting redraw happen."); + map.removeControl(control); + } function test_05_Control_LayerSwitcher_ascendingw (t) {