diff --git a/lib/OpenLayers/Handler/Feature.js b/lib/OpenLayers/Handler/Feature.js index 46da4a1750..9b76232af2 100644 --- a/lib/OpenLayers/Handler/Feature.js +++ b/lib/OpenLayers/Handler/Feature.js @@ -271,7 +271,7 @@ OpenLayers.Handler.Feature = OpenLayers.Class(OpenLayers.Handler, { var type = evt.type; var handled = false; var previouslyIn = !!(this.feature); // previously in a feature - var click = (type == "click" || type == "dblclick"); + var click = (type == "click" || type == "dblclick" || type == "touchstart"); this.feature = this.layer.getFeatureFromEvent(evt); if(this.feature && !this.feature.layer) { // feature has been destroyed @@ -282,7 +282,7 @@ OpenLayers.Handler.Feature = OpenLayers.Class(OpenLayers.Handler, { this.lastFeature = null; } if(this.feature) { - if(evt.type === "touchstart") { + if(type === "touchstart") { // stop the event to prevent Android Webkit from // "flashing" the map div OpenLayers.Event.stop(evt); diff --git a/tests/Handler/Feature.html b/tests/Handler/Feature.html index 4c3641aa33..c2ed697984 100644 --- a/tests/Handler/Feature.html +++ b/tests/Handler/Feature.html @@ -123,7 +123,7 @@ } function test_callbacks(t) { - t.plan(13); + t.plan(14); var map = new OpenLayers.Map('map', {controls: []}); var control = new OpenLayers.Control(); @@ -235,6 +235,12 @@ evtPx.type = "touchstart"; map.events.triggerEvent('touchstart', evtPx); + // test touchstart on the same feature + // 'click' callback should be called + callbacks['click'] = getCallback('click (touch)', newFeature); + evtPx.type = "touchstart"; + map.events.triggerEvent('touchstart', evtPx); + // test touchstart in new feature and out of last feature // both 'click' and 'clickout' callbacks should be called lastFeature = newFeature;