Fixed refreshing of features in VML renderers when moving renderer roots
(e.g. by deactivating the SelectFeature control). Thanks Kris Geusebroek for reporting this. r=elemoine (closes #2048) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9301 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
</style>
|
</style>
|
||||||
<script src="../lib/OpenLayers.js"></script>
|
<script src="../lib/OpenLayers.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var map, drawControls;
|
var map, selectControl;
|
||||||
OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2';
|
OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2';
|
||||||
function init(){
|
function init(){
|
||||||
map = new OpenLayers.Map('map');
|
map = new OpenLayers.Map('map');
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
map.addLayers([wmsLayer, vectors1, vectors2]);
|
map.addLayers([wmsLayer, vectors1, vectors2]);
|
||||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||||
|
|
||||||
var selectControl = new OpenLayers.Control.SelectFeature(
|
selectControl = new OpenLayers.Control.SelectFeature(
|
||||||
[vectors1, vectors2],
|
[vectors1, vectors2],
|
||||||
{
|
{
|
||||||
clickout: true, toggle: false,
|
clickout: true, toggle: false,
|
||||||
|
|||||||
@@ -881,8 +881,11 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
* {Boolean} true if successful, false otherwise
|
* {Boolean} true if successful, false otherwise
|
||||||
*/
|
*/
|
||||||
moveRoot: function(renderer) {
|
moveRoot: function(renderer) {
|
||||||
var layer = this.map.getLayer(this.container.id);
|
var layer = this.map.getLayer(renderer.container.id);
|
||||||
layer && this.clear();
|
if(layer instanceof OpenLayers.Layer.Vector.RootContainer) {
|
||||||
|
layer = this.map.getLayer(this.container.id);
|
||||||
|
}
|
||||||
|
layer && layer.renderer.clear();
|
||||||
OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this, arguments);
|
OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this, arguments);
|
||||||
layer && layer.redraw();
|
layer && layer.redraw();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -387,6 +387,31 @@
|
|||||||
t.eq(r.dashStyle({strokeDashstyle: "4 4 1 4"}), "dashdot", "dashdot pattern recognized correctly.");
|
t.eq(r.dashStyle({strokeDashstyle: "4 4 1 4"}), "dashdot", "dashdot pattern recognized correctly.");
|
||||||
t.eq(r.dashStyle({strokeDashstyle: "8 4 1 4"}), "longdashdot", "longdashdot pattern recognized correctly.");
|
t.eq(r.dashStyle({strokeDashstyle: "8 4 1 4"}), "longdashdot", "longdashdot pattern recognized correctly.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_vml_moveRoot(t) {
|
||||||
|
if (!OpenLayers.Renderer.VML.prototype.supported()) {
|
||||||
|
t.plan(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
t.plan(2);
|
||||||
|
|
||||||
|
var map = new OpenLayers.Map("map");
|
||||||
|
var l1 = new OpenLayers.Layer.Vector("vector");
|
||||||
|
map.addLayer(l1);
|
||||||
|
var l2 = new OpenLayers.Layer.Vector.RootContainer("rootcontainer", {layers: [l1]});
|
||||||
|
|
||||||
|
var clear = l1.renderer.clear;
|
||||||
|
l1.renderer.clear = function() {
|
||||||
|
// this should be called twice, once when l2 is added to the map,
|
||||||
|
// and once when removed from the map.
|
||||||
|
t.ok(true, "Clearing original layer");
|
||||||
|
};
|
||||||
|
map.addLayer(l2);
|
||||||
|
map.removeLayer(l2);
|
||||||
|
l1.renderer.clear = clear;
|
||||||
|
|
||||||
|
map.removeLayer(l1);
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
Reference in New Issue
Block a user