From 1298fe195dc5be44855161f8d1106306e3ceb996 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 11 Feb 2013 11:15:23 -0800 Subject: [PATCH] Remove keybinding coupling from iD.behavior.drag --- js/id/behavior/drag.js | 10 ---------- js/id/behavior/drag_node.js | 26 ++++++++++++++++++++------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/js/id/behavior/drag.js b/js/id/behavior/drag.js index cd6f607bf..012e08d34 100644 --- a/js/id/behavior/drag.js +++ b/js/id/behavior/drag.js @@ -24,7 +24,6 @@ iD.behavior.drag = function() { origin = null, selector = '', filter = null, - keybinding = d3.keybinding('drag'), event_, target; event.of = function(thiz, argumentz) { @@ -137,9 +136,6 @@ iD.behavior.drag = function() { drag.off = function(selection) { selection.on("mousedown.drag" + selector, null) .on("touchstart.drag" + selector, null); - keybinding - .on('⌘+Z', null) - .on('⌃+Z', null); }; drag.delegate = function(_) { @@ -174,11 +170,5 @@ iD.behavior.drag = function() { return drag; }; - keybinding - .on('⌘+Z', drag.cancel) - .on('⌃+Z', drag.cancel); - - d3.select(document).call(keybinding); - return d3.rebind(drag, event, "on"); }; diff --git a/js/id/behavior/drag_node.js b/js/id/behavior/drag_node.js index e3028953d..3e652794d 100644 --- a/js/id/behavior/drag_node.js +++ b/js/id/behavior/drag_node.js @@ -36,6 +36,8 @@ iD.behavior.DragNode = function(context) { } function start(entity) { + context.history() + .on('undone.drag-node', cancel); wasMidpoint = entity.type === 'midpoint'; if (wasMidpoint) { @@ -95,12 +97,7 @@ iD.behavior.DragNode = function(context) { } function end(entity) { - context.surface() - .classed('behavior-drag-node', false) - .selectAll('.active') - .classed('active', false); - - stopNudge(); + off(); var d = datum(); if (d.type === 'way') { @@ -132,6 +129,23 @@ iD.behavior.DragNode = function(context) { } } + function off() { + context.history() + .on('undone.drag_node', null); + + context.surface() + .classed('behavior-drag-node', false) + .selectAll('.active') + .classed('active', false); + + stopNudge(); + } + + function cancel() { + off(); + behavior.cancel(); + } + var behavior = iD.behavior.drag() .delegate("g.node, g.midpoint") .origin(origin)