From 7789bc5b152a4e674dcb85592c65ab32ca047a4b Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 8 Feb 2021 19:08:04 +0100 Subject: [PATCH] Report all features being modified --- src/ol/interaction/Modify.js | 9 ++++++--- test/spec/ol/interaction/modify.test.js | 10 +++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/ol/interaction/Modify.js b/src/ol/interaction/Modify.js index 7ac7d888ea..1b479a9ae7 100644 --- a/src/ol/interaction/Modify.js +++ b/src/ol/interaction/Modify.js @@ -427,9 +427,12 @@ class Modify extends PointerInteraction { this.featuresBeingModified_ = new Collection(); const features = this.featuresBeingModified_.getArray(); for (let i = 0, ii = segments.length; i < ii; ++i) { - const feature = segments[i][0].feature; - if (features.indexOf(feature) === -1) { - this.featuresBeingModified_.push(feature); + const segment = segments[i]; + for (let s = 0, ss = segment.length; s < ss; ++s) { + const feature = segment[s].feature; + if (feature && features.indexOf(feature) === -1) { + this.featuresBeingModified_.push(feature); + } } } diff --git a/test/spec/ol/interaction/modify.test.js b/test/spec/ol/interaction/modify.test.js index ae41a018a2..bc566a8047 100644 --- a/test/spec/ol/interaction/modify.test.js +++ b/test/spec/ol/interaction/modify.test.js @@ -142,7 +142,7 @@ describe('ol.interaction.Modify', function () { const startevent = events[0]; const endevent = events[events.length - 1]; - // first event should be modifystary + // first event should be modifystart expect(startevent).to.be.a(ModifyEvent); expect(startevent.type).to.eql('modifystart'); @@ -463,15 +463,23 @@ describe('ol.interaction.Modify', function () { const modify = new Modify({ features: new Collection(features), }); + let modifiedFeatures; + + const onModifyStart = function (evt) { + modifiedFeatures = evt.features; + }; map.addInteraction(modify); + modify.on('modifystart', onModifyStart); // Click on line simulateEvent('pointermove', 0, 0, null, 0); simulateEvent('pointerdown', 0, 0, null, 0); simulateEvent('pointerup', 0, 0, null, 0); + modify.un('modifystart', onModifyStart); expect(lineFeature1.getGeometry().getCoordinates().length).to.be(4); expect(lineFeature2.getGeometry().getCoordinates().length).to.be(4); + expect(modifiedFeatures.getArray()).to.eql([lineFeature1, lineFeature2]); }); });