From 881f8e72541ba832db9b0e320e96a6ed5de71278 Mon Sep 17 00:00:00 2001 From: Brandon Reavis Date: Thu, 17 Sep 2015 21:34:51 -0600 Subject: [PATCH] Added space bar "click" when drawing ways --- js/id/behavior/draw.js | 28 ++++++++++++++++++++++++---- js/id/behavior/draw_way.js | 3 +++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/js/id/behavior/draw.js b/js/id/behavior/draw.js index da5874fa5..29ce9733f 100644 --- a/js/id/behavior/draw.js +++ b/js/id/behavior/draw.js @@ -1,6 +1,7 @@ iD.behavior.Draw = function(context) { var event = d3.dispatch('move', 'click', 'clickWay', - 'clickNode', 'undo', 'cancel', 'finish'), + 'clickNode', 'undo', 'cancel', 'finish', + 'spacedown', 'spacedownNode', 'spacedownWay'), keybinding = d3.keybinding('draw'), hover = iD.behavior.Hover(context) .altDisables(true) @@ -8,7 +9,8 @@ iD.behavior.Draw = function(context) { tail = iD.behavior.Tail(), edit = iD.behavior.Edit(context), closeTolerance = 4, - tolerance = 12; + tolerance = 12, + lastDatum = {}; function datum() { if (d3.event.altKey) return {}; @@ -55,7 +57,8 @@ iD.behavior.Draw = function(context) { } function mousemove() { - event.move(datum()); + lastDatum = datum(); + event.move(lastDatum); } function click() { @@ -73,6 +76,21 @@ iD.behavior.Draw = function(context) { } } + function space() { + var d = lastDatum; + if (d.type === 'way') { + var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection), + edge = [d.nodes[choice.index - 1], d.nodes[choice.index]]; + event.spacedownWay(choice.loc, edge); + + } else if (d.type === 'node') { + event.spacedownNode(d); + + } else { + event.spacedown(context.map().mouseCoordinates()); + } + } + function backspace() { d3.event.preventDefault(); event.undo(); @@ -100,7 +118,9 @@ iD.behavior.Draw = function(context) { .on('⌫', backspace) .on('⌦', del) .on('⎋', ret) - .on('↩', ret); + .on('↩', ret) + .on('space', space) + .on('Alt+space', space); selection .on('mousedown.draw', mousedown) diff --git a/js/id/behavior/draw_way.js b/js/id/behavior/draw_way.js index bc7d1736c..9baf8e034 100644 --- a/js/id/behavior/draw_way.js +++ b/js/id/behavior/draw_way.js @@ -55,6 +55,9 @@ iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) { .on('click', drawWay.add) .on('clickWay', drawWay.addWay) .on('clickNode', drawWay.addNode) + .on('spacedown', drawWay.add) + .on('spacedownWay', drawWay.addWay) + .on('spacedownNode', drawWay.addNode) .on('undo', context.undo) .on('cancel', drawWay.cancel) .on('finish', drawWay.finish);