diff --git a/examples/drag-and-drop-image-vector.js b/examples/drag-and-drop-image-vector.js index c211379aba..18cb0812e6 100644 --- a/examples/drag-and-drop-image-vector.js +++ b/examples/drag-and-drop-image-vector.js @@ -149,6 +149,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/drag-and-drop.js b/examples/drag-and-drop.js index d044e8c44a..9225d8fcd5 100644 --- a/examples/drag-and-drop.js +++ b/examples/drag-and-drop.js @@ -145,6 +145,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/gpx.js b/examples/gpx.js index 2723abbfb6..7936ef5f87 100644 --- a/examples/gpx.js +++ b/examples/gpx.js @@ -86,6 +86,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/icon.js b/examples/icon.js index 40a3a96e69..d94e335313 100644 --- a/examples/icon.js +++ b/examples/icon.js @@ -63,7 +63,7 @@ var popup = new ol.Overlay({ map.addOverlay(popup); // display popup on click -map.on('singleclick', function(evt) { +map.on('click', function(evt) { var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) { return feature; diff --git a/examples/igc.js b/examples/igc.js index c8a14dd113..5a25ac55a7 100644 --- a/examples/igc.js +++ b/examples/igc.js @@ -125,7 +125,7 @@ $(map.getViewport()).on('mousemove', function(evt) { displaySnap(coordinate); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displaySnap(evt.coordinate); }); diff --git a/examples/image-vector-layer.js b/examples/image-vector-layer.js index 855fa5759f..f5dbd3520e 100644 --- a/examples/image-vector-layer.js +++ b/examples/image-vector-layer.js @@ -85,6 +85,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml-earthquakes.js b/examples/kml-earthquakes.js index e9bbf9380d..ca6d3d5901 100644 --- a/examples/kml-earthquakes.js +++ b/examples/kml-earthquakes.js @@ -88,6 +88,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(map.getEventPixel(evt.originalEvent)); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml-timezones.js b/examples/kml-timezones.js index 21cf0d006c..33da7c2e7b 100644 --- a/examples/kml-timezones.js +++ b/examples/kml-timezones.js @@ -95,6 +95,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(map.getEventPixel(evt.originalEvent)); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml.js b/examples/kml.js index e358f021d0..3a6ab76b30 100644 --- a/examples/kml.js +++ b/examples/kml.js @@ -52,6 +52,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/examples/overlay.js b/examples/overlay.js index ffe4b83ef6..ebc0c11eef 100644 --- a/examples/overlay.js +++ b/examples/overlay.js @@ -45,7 +45,7 @@ var popup = new ol.Overlay({ }); map.addOverlay(popup); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { var element = popup.getElement(); var coordinate = evt.coordinate; var hdms = ol.coordinate.toStringHDMS(ol.proj.transform( diff --git a/examples/popup.js b/examples/popup.js index 50675368c1..ac59cedd5e 100644 --- a/examples/popup.js +++ b/examples/popup.js @@ -60,7 +60,7 @@ var map = new ol.Map({ /** * Add a click handler to the map to render the popup. */ -map.on('singleclick', function(evt) { +map.on('click', function(evt) { var coordinate = evt.coordinate; var hdms = ol.coordinate.toStringHDMS(ol.proj.transform( coordinate, 'EPSG:3857', 'EPSG:4326')); diff --git a/examples/synthetic-points.js b/examples/synthetic-points.js index 549a1743a5..536a51ebd5 100644 --- a/examples/synthetic-points.js +++ b/examples/synthetic-points.js @@ -94,7 +94,7 @@ $(map.getViewport()).on('mousemove', function(evt) { displaySnap(coordinate); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displaySnap(evt.coordinate); }); diff --git a/examples/vector-layer.js b/examples/vector-layer.js index e09c9c6072..659e0883cf 100644 --- a/examples/vector-layer.js +++ b/examples/vector-layer.js @@ -122,6 +122,6 @@ $(map.getViewport()).on('mousemove', function(evt) { displayFeatureInfo(pixel); }); -map.on('singleclick', function(evt) { +map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index 5fa2f0945b..31b7b4f6d3 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -248,11 +248,15 @@ ol.MapBrowserEventHandler.prototype.emulateClickLegacyIE_ = * @private */ ol.MapBrowserEventHandler.prototype.emulateClick_ = function(pointerEvent) { + var newEvent; + newEvent = new ol.MapBrowserPointerEvent( + ol.MapBrowserEvent.EventType.CLICK, this.map_, pointerEvent); + this.dispatchEvent(newEvent); if (this.clickTimeoutId_ !== 0) { // double-click goog.global.clearTimeout(this.clickTimeoutId_); this.clickTimeoutId_ = 0; - var newEvent = new ol.MapBrowserPointerEvent( + newEvent = new ol.MapBrowserPointerEvent( ol.MapBrowserEvent.EventType.DBLCLICK, this.map_, pointerEvent); this.dispatchEvent(newEvent); } else { @@ -470,6 +474,12 @@ ol.MapBrowserEvent.EventType = { * @todo stability experimental */ SINGLECLICK: 'singleclick', + /** + * A click with no dragging. A double click will fire two of this. + * @event ol.MapBrowserEvent#click + * @todo stability experimental + */ + CLICK: goog.events.EventType.CLICK, /** * A true double click, with no dragging. * @event ol.MapBrowserEvent#dblclick diff --git a/test/spec/ol/mapbrowserevent.test.js b/test/spec/ol/mapbrowserevent.test.js index 01438bd0c0..c046545524 100644 --- a/test/spec/ol/mapbrowserevent.test.js +++ b/test/spec/ol/mapbrowserevent.test.js @@ -4,6 +4,7 @@ describe('ol.MapBrowserEventHandler', function() { describe('#emulateClick_', function() { var clock; var handler; + var clickSpy; var singleclickSpy; var dblclickSpy; var target; @@ -15,6 +16,9 @@ describe('ol.MapBrowserEventHandler', function() { target: target })); + clickSpy = sinon.spy(); + goog.events.listen(handler, 'click', clickSpy); + singleclickSpy = sinon.spy(); goog.events.listen(handler, 'singleclick', singleclickSpy); @@ -28,6 +32,17 @@ describe('ol.MapBrowserEventHandler', function() { }); it('emulates click', function() { + handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', + new goog.events.BrowserEvent({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + }))); + expect(clickSpy.called).to.be.ok(); + }); + + it('emulates singleclick', function() { handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', new goog.events.BrowserEvent({ type: 'mousedown', @@ -54,12 +69,13 @@ describe('ol.MapBrowserEventHandler', function() { }); it('emulates dblclick', function() { - handler.emulateClick_({ - type: 'mousedown', - target: target, - clientX: 0, - clientY: 0 - }); + handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', + new goog.events.BrowserEvent({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + }))); expect(singleclickSpy.called).to.not.be.ok(); expect(dblclickSpy.called).to.not.be.ok();