diff --git a/src/ol/map.js b/src/ol/map.js
index 23b42bc203..22609eb4a6 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -542,6 +542,7 @@ ol.Map.prototype.handleControlsRemove_ = function(collectionEvent) {
* @param {ol.MapBrowserEvent} mapBrowserEvent The event to handle.
*/
ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) {
+ mapBrowserEvent.frameState = this.frameState_;
var interactions = this.getInteractions();
var interactionsArray = /** @type {Array.
} */
(interactions.getArray());
diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js
index cdb40d3e66..a6b0f20be7 100644
--- a/src/ol/mapbrowserevent.js
+++ b/src/ol/mapbrowserevent.js
@@ -21,10 +21,11 @@ goog.require('ol.Pixel');
* @param {string} type Event type.
* @param {ol.Map} map Map.
* @param {goog.events.BrowserEvent} browserEvent Browser event.
+ * @param {?ol.FrameState=} opt_frameState Frame state.
*/
-ol.MapBrowserEvent = function(type, map, browserEvent) {
+ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) {
- goog.base(this, type, map);
+ goog.base(this, type, map, opt_frameState);
/**
* @type {goog.events.BrowserEvent}
@@ -230,6 +231,9 @@ ol.MapBrowserEventHandler.prototype.handleUp_ = function(browserEvent) {
* @private
*/
ol.MapBrowserEventHandler.prototype.handleDown_ = function(browserEvent) {
+ var newEvent = new ol.MapBrowserEvent(
+ ol.MapBrowserEvent.EventType.DOWN, this.map_, browserEvent);
+ this.dispatchEvent(newEvent);
if (!this.previous_) {
this.touchEnableBrowserEvent_(browserEvent);
this.down_ = browserEvent;
@@ -306,5 +310,6 @@ ol.MapBrowserEvent.EventType = {
DBLCLICK: goog.events.EventType.DBLCLICK,
DRAGSTART: 'dragstart',
DRAG: 'drag',
- DRAGEND: 'dragend'
+ DRAGEND: 'dragend',
+ DOWN: 'down'
};