Ticket #1562: patch-1562-r7288-A0.diff
| File patch-1562-r7288-A0.diff, 6.2 kB (added by elemoine, 6 months ago) |
|---|
-
tests/Control/ModifyFeature.html
old new 213 213 control.selectFeature({feature: fakeFeature}); 214 214 215 215 control.destroy(); 216 217 // layer.destroy() will call removeFeatures with an empty array, make 218 // removeFeatures reference an empty function to prevent the above 219 // test to fail 220 layer.removeFeatures = function(features) {}; 216 221 layer.destroy(); 217 222 } 218 223 … … 323 328 control.dragComplete(); 324 329 325 330 control.destroy(); 331 332 // layer.destroy() will call removeFeatures with an empty array, make 333 // removeFeatures reference an empty function to prevent the above 334 // test to fail 335 layer.removeFeatures = function(verts) {}; 326 336 layer.destroy(); 327 337 } 328 338 -
lib/OpenLayers/Control/ModifyFeature.js
old new 273 273 var deactivated = false; 274 274 // the return from the controls is unimportant in this case 275 275 if(OpenLayers.Control.prototype.deactivate.apply(this, arguments)) { 276 this.layer.removeFeatures(this.vertices );277 this.layer.removeFeatures(this.virtualVertices );276 this.layer.removeFeatures(this.vertices, {silent: true}); 277 this.layer.removeFeatures(this.virtualVertices, {silent: true}); 278 278 this.vertices = []; 279 279 this.dragControl.deactivate(); 280 280 if(this.feature && this.feature.geometry) { … … 314 314 * unselected feature. 315 315 */ 316 316 unselectFeature: function(object) { 317 this.layer.removeFeatures(this.vertices );317 this.layer.removeFeatures(this.vertices, {silent: true}); 318 318 this.vertices = []; 319 this.layer.destroyFeatures(this.virtualVertices );319 this.layer.destroyFeatures(this.virtualVertices, {silent: true}); 320 320 this.virtualVertices = []; 321 321 if(this.dragHandle) { 322 this.layer.destroyFeatures([this.dragHandle] );322 this.layer.destroyFeatures([this.dragHandle], {silent: true}); 323 323 delete this.dragHandle; 324 324 } 325 325 if(this.radiusHandle) { 326 this.layer.destroyFeatures([this.radiusHandle] );326 this.layer.destroyFeatures([this.radiusHandle], {silent: true}); 327 327 delete this.radiusHandle; 328 328 } 329 329 this.feature = null; … … 413 413 this.vertices.push(vertex); 414 414 } else if(vertex == this.dragHandle) { 415 415 // dragging a drag handle 416 this.layer.removeFeatures(this.vertices );416 this.layer.removeFeatures(this.vertices, {silent: true}); 417 417 this.vertices = []; 418 418 if(this.radiusHandle) { 419 this.layer.destroyFeatures([this.radiusHandle] );419 this.layer.destroyFeatures([this.radiusHandle], {silent: true}); 420 420 this.radiusHandle = null; 421 421 } 422 422 } 423 423 // dragging a radius handle - no special treatment 424 424 // dragging a real vertex - no special treatment 425 425 if(this.virtualVertices.length > 0) { 426 this.layer.destroyFeatures(this.virtualVertices );426 this.layer.destroyFeatures(this.virtualVertices, {silent: true}); 427 427 this.virtualVertices = []; 428 428 } 429 429 this.layer.drawFeature(this.feature, this.selectControl.renderIntent); … … 463 463 this.dragControl.outFeature(this.dragControl.feature); 464 464 } 465 465 if(this.vertices.length > 0) { 466 this.layer.removeFeatures(this.vertices );466 this.layer.removeFeatures(this.vertices, {silent: true}); 467 467 this.vertices = []; 468 468 } 469 469 if(this.virtualVertices.length > 0) { 470 this.layer.removeFeatures(this.virtualVertices );470 this.layer.removeFeatures(this.virtualVertices, {silent: true}); 471 471 this.virtualVertices = []; 472 472 } 473 473 if(this.dragHandle) { 474 this.layer.destroyFeatures([this.dragHandle] );474 this.layer.destroyFeatures([this.dragHandle], {silent: true}); 475 475 this.dragHandle = null; 476 476 } 477 477 if(this.radiusHandle) { 478 this.layer.destroyFeatures([this.radiusHandle] );478 this.layer.destroyFeatures([this.radiusHandle], {silent: true}); 479 479 this.radiusHandle = null; 480 480 } 481 481 if(this.feature && -
lib/OpenLayers/Layer/Vector.js
old new 398 398 } 399 399 400 400 this.features = OpenLayers.Util.removeItem(this.features, feature); 401 // feature has no layer at this point 402 feature.layer = null; 401 403 402 404 if (feature.geometry) { 403 405 this.renderer.eraseGeometry(feature.geometry); … … 429 431 * features - {Array(<OpenLayers.Feature.Vector>)} An optional array of 430 432 * features to destroy. If not supplied, all features on the layer 431 433 * will be destroyed. 434 * options - {Object} 432 435 */ 433 destroyFeatures: function(features) { 434 var all = (features == undefined); 436 destroyFeatures: function(features, options) { 437 var all = (features == undefined); // evaluates to true if 438 // features is null 435 439 if(all) { 436 440 features = this.features; 437 this.selectedFeatures = [];438 441 } 439 this.eraseFeatures(features); 440 var feature; 441 for(var i=features.length-1; i>=0; i--) { 442 feature = features[i]; 443 if(!all) { 444 OpenLayers.Util.removeItem(this.selectedFeatures, feature); 445 } 446 feature.destroy(); 442 this.removeFeatures(features, options); 443 for (var i = 0; i < features.length; i++) { 444 features[i].destroy(); 447 445 } 448 446 }, 449 447
