From 1e5a0fc4a739e315f29bec82aae1b73a0f543dfb Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 18 Apr 2013 18:31:34 -0400 Subject: [PATCH] Stop nudging when users drag outside of the window. Fixes #1326 --- js/id/modes/drag_node.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/js/id/modes/drag_node.js b/js/id/modes/drag_node.js index df3558171..64d2541fd 100644 --- a/js/id/modes/drag_node.js +++ b/js/id/modes/drag_node.js @@ -77,11 +77,21 @@ iD.modes.DragNode = function(context) { return d3.event.sourceEvent.target.__data__ || {}; } + // via https://gist.github.com/shawnbot/4166283 + function childOf(p, c) { + if (p === c) return false; + while (c && c !== p) c = c.parentNode; + return c === p; + } + function move(entity) { if (cancelled) return; d3.event.sourceEvent.stopPropagation(); - var nudge = edge(d3.event.point, context.map().size()); + var nudge = childOf(context.container().node(), + d3.event.sourceEvent.toElement) && + edge(d3.event.point, context.map().size()); + if (nudge) startNudge(nudge); else stopNudge();