From 528d4a040e593f6ce2171167c436dbdf27511711 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 2 Dec 2013 16:13:58 -0800 Subject: [PATCH] Improve click behavior on changeset entries On Chrome, this lets clicks with modifier keys anywhere on the changeset entry work as expected. On other browsers, modifier keys still only work on the link itself. --- app/assets/javascripts/index/history.js | 34 +++++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index 04f7c0731..27774f05b 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -10,8 +10,9 @@ OSM.History = function(map) { unHighlightChangeset($(this).data("changeset").id); }) .on("click", "[data-changeset]", function (e) { - e.preventDefault(); - clickChangeset($(this).data("changeset").id); + if (!$(e.target).is('a')) { + clickChangeset($(this).data("changeset").id, e); + } }); var group = L.featureGroup() @@ -22,7 +23,7 @@ OSM.History = function(map) { unHighlightChangeset(e.layer.id); }) .on("click", function (e) { - clickChangeset(e.layer.id); + clickChangeset(e.layer.id, e); }); group.getLayerId = function(layer) { @@ -39,8 +40,31 @@ OSM.History = function(map) { $("#changeset_" + id).removeClass("selected"); } - function clickChangeset(id) { - OSM.router.route($("#changeset_" + id).find(".changeset_id").attr("href")); + function clickChangeset(id, e) { + var evt, el = $("#changeset_" + id).find("a.changeset_id")[0]; + if ('createEvent' in document) { + evt = document.createEvent('MouseEvents'); + evt.initMouseEvent('click', + true, // canBubble + true, // cancelable + window, // 'AbstractView' + e.clicks, // click count + e.screenX, // screenX + e.screenY, // screenY + e.clientX, // clientX + e.clientY, // clientY + e.ctrlKey, // ctrl + e.altKey, // alt + e.shiftKey, // shift + e.metaKey, // meta + e.button, // mouse button + e.relatedTarget // relatedTarget + ); + el.dispatchEvent(evt); + } else { + evt = document.createEventObject(); + el.fireEvent('onclick', evt); + } } function loadData() { -- 2.39.5