From b562f4d68a76379da63ae1e2800f295dbc8e18c5 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 2 Jun 2016 17:38:47 +0200 Subject: [PATCH] Don't dispatch select event if a selected feature is selected again --- src/ol/interaction/selectinteraction.js | 4 ++-- test/spec/ol/interaction/selectinteraction.test.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ol/interaction/selectinteraction.js b/src/ol/interaction/selectinteraction.js index 2fa7af1729..142d8d1e82 100644 --- a/src/ol/interaction/selectinteraction.js +++ b/src/ol/interaction/selectinteraction.js @@ -281,9 +281,9 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) { return !this.multi_; } }, this, this.layerFilter_); - if (selected.length > 0 && features.getLength() == 1 && - features.item(0) == selected[0]) { + if (selected.length > 0 && features.getLength() == 1 && features.item(0) == selected[0]) { // No change; an already selected feature is selected again + selected.length = 0; } else { if (features.getLength() !== 0) { deselected = Array.prototype.concat(features.getArray()); diff --git a/test/spec/ol/interaction/selectinteraction.test.js b/test/spec/ol/interaction/selectinteraction.test.js index 83af9fe076..f4aa834288 100644 --- a/test/spec/ol/interaction/selectinteraction.test.js +++ b/test/spec/ol/interaction/selectinteraction.test.js @@ -144,6 +144,20 @@ describe('ol.interaction.Select', function() { expect(features.getLength()).to.equal(0); }); + it('select twice with single-click', function() { + var listenerSpy = sinon.spy(function(e) { + expect(e.selected).to.have.length(1); + }); + select.on('select', listenerSpy); + + simulateEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, 10, -20); + simulateEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, 9, -21); + + expect(listenerSpy.callCount).to.be(1); + + var features = select.getFeatures(); + expect(features.getLength()).to.equal(1); + }); it('select with shift single-click', function() { var listenerSpy = sinon.spy(function(e) {