diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2016-07-13 22:20:01 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2016-07-14 01:07:00 +0100 |
commit | aa0a3912b17bdab7ea0df09873236c1978d8a682 (patch) | |
tree | b28edc3b77464065758b5c15239a7677dc7404ee /web/js | |
parent | f61b6d3be37074f3bbe543bf291865e550572040 (diff) |
Work correctly for alt-click/cmd-click etc.
Diffstat (limited to 'web/js')
-rw-r--r-- | web/js/map-OpenLayers.js | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index e1f152820..992037a2f 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -202,9 +202,36 @@ var fixmystreet = fixmystreet || {}; } } - function marker_click(problem_id) { + function marker_click(problem_id, evt) { var $a = $('.item-list--reports a[href$="/' + problem_id + '"]'); - $a[0] && $a[0].click(); + if (!$a[0]) { + return; + } + + // All of this, just so that ctrl/cmd-click on a pin works?! + var event; + if (window.MouseEvent) { + event = new MouseEvent('click', evt); + $a[0].dispatchEvent(event); + } else if (document.createEvent) { + event = document.createEvent("MouseEvents"); + event.initMouseEvent( + 'click', true, true, window, 1, + 0, 0, 0, 0, + evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, + 0, null); + $a[0].dispatchEvent(event); + } else if (document.createEventObject) { + event = document.createEventObject(); + event.metaKey = evt.metaKey; + event.ctrlKey = evt.ctrlKey; + if (e.metaKey === undefined) { + e.metaKey = e.ctrlKey; + } + $a[0].fireEvent("onclick", event); + } else { + $a[0].click(); + } } function categories_or_status_changed() { @@ -331,7 +358,7 @@ var fixmystreet = fixmystreet || {}; // Override clickFeature so that we can use it even though // hover is true. http://gis.stackexchange.com/a/155675 clickFeature: function (feature) { - marker_click(feature.attributes.id); + marker_click(feature.attributes.id, this.handlers.feature.evt); }, overFeature: function (feature) { if (fixmystreet.latest_map_hover_event != 'overFeature') { |