From aa066ec8b2a87a93c098a79e4f4bb5b7c13b8aa1 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Wed, 5 Dec 2012 16:44:45 -0500 Subject: [PATCH] Fixup area drawing, add delete keybinding for deleting last point --- js/id/modes/draw_area.js | 16 ++++++++++++++-- js/id/modes/draw_road.js | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/js/id/modes/draw_area.js b/js/id/modes/draw_area.js index ca1352432..bddbb7c8a 100644 --- a/js/id/modes/draw_area.js +++ b/js/id/modes/draw_area.js @@ -24,9 +24,10 @@ iD.modes.DrawArea = function(way_id) { if (datum.type === 'node') { if (datum.id == firstnode_id) { + mode.history.replace(iD.actions.DeleteNode(node)); mode.history.replace(iD.actions.addWayNode(way, mode.history.graph().entity(way.nodes[0]))); - + way = mode.history.graph().entity(way.id); mode.history.perform(iD.actions.changeTags(way, _.omit(way.tags, 'elastic'))); // End by clicking on own tail @@ -45,6 +46,16 @@ iD.modes.DrawArea = function(way_id) { mode.map.keybinding().on('⎋.drawarea', function() { mode.controller.exit(); + }) + .on('⌫.drawarea', function() { + d3.event.preventDefault(); + var lastNode = _.last(way.nodes); + mode.history.replace(iD.actions.removeWayNode(way, + mode.history.graph().entity(lastNode))); + mode.history.replace(iD.actions.DeleteNode( + mode.history.graph().entity(lastNode))); + mode.history.replace(iD.actions.DeleteNode(node)); + mode.controller.enter(iD.modes.DrawArea(way_id)); }); }; @@ -53,7 +64,8 @@ iD.modes.DrawArea = function(way_id) { mode.map.surface .on('mousemove.drawarea', null) .on('click.drawarea', null); - mode.map.keybinding().on('⎋.drawarea', null); + mode.map.keybinding().on('⎋.drawarea', null) + .on('⌫.drawarea', null); window.setTimeout(function() { mode.map.dblclickEnable(true); }, 1000); diff --git a/js/id/modes/draw_road.js b/js/id/modes/draw_road.js index 6b31ada42..79f2ee3be 100644 --- a/js/id/modes/draw_road.js +++ b/js/id/modes/draw_road.js @@ -17,7 +17,8 @@ iD.modes.DrawRoad = function(way_id, direction) { mode.history.perform(iD.actions.addWayNode(way, node, index)); mode.map.surface.on('mousemove.drawroad', function() { - mode.history.replace(iD.actions.addWayNode(way, node.update({loc: mode.map.mouseCoordinates()}), index)); + mode.history.replace(iD.actions.addWayNode(way, + node.update({loc: mode.map.mouseCoordinates()}), index)); }); mode.map.surface.on('click.drawroad', function() { @@ -63,6 +64,16 @@ iD.modes.DrawRoad = function(way_id, direction) { mode.map.keybinding().on('⎋.drawroad', function() { mode.controller.exit(); }); + + mode.map.keybinding().on('⌫.drawroad', function() { + d3.event.preventDefault(); + mode.history.replace(iD.actions.removeWayNode(way, + mode.history.graph().entity(lastNode))); + mode.history.replace(iD.actions.DeleteNode( + mode.history.graph().entity(lastNode))); + mode.history.replace(iD.actions.DeleteNode(node)); + mode.controller.enter(iD.modes.DrawRoad(way_id, direction)); + }); }; mode.exit = function() { @@ -70,7 +81,8 @@ iD.modes.DrawRoad = function(way_id, direction) { mode.map.surface .on('mousemove.drawroad', null) .on('click.drawroad', null); - mode.map.keybinding().on('⎋.drawroad', null); + mode.map.keybinding().on('⎋.drawroad', null) + .on('⌫.drawroad', null); window.setTimeout(function() { mode.map.dblclickEnable(true); mode.map.dragEnable(true);