From 86118ece4e744af0333d1443836765b2645c392f Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 7 Feb 2017 11:40:11 -0500 Subject: [PATCH] Fix node drag regression introduced in 919234d (closes #3829) --- modules/modes/drag_node.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/modes/drag_node.js b/modules/modes/drag_node.js index 4a99f17ba..39f528942 100644 --- a/modules/modes/drag_node.js +++ b/modules/modes/drag_node.js @@ -99,14 +99,20 @@ export function modeDragNode(context) { function start(entity) { wasMidpoint = entity.type === 'midpoint'; - // vertices classed "sibling" include: (see svg/vertices.js) - // - children of selected ways or multipolygons - // - vertices sharing a way with selected vertices - var selection = d3.selectAll('g.vertex-persistent.' + entity.id), - isSelected = !selection.empty() && - (selection.classed('selected') || selection.classed('sibling')); + // Things allowed to be dragged include: + // - midpoints + // - nodes that are selected + // - vertices that are selected + // - vertices classed 'sibling' which includes (see svg/vertices.js) + // - children of selected ways or multipolygons + // - vertices sharing a way with selected vertices + var selector = 'g.node.point.selected.' + entity.id + + ', g.vertex-persistent.selected.' + entity.id + + ', g.vertex-persistent.sibling.' + entity.id; - isCancelled = d3.event.sourceEvent.shiftKey || !(wasMidpoint || isSelected) || + var isDraggable = wasMidpoint || !d3.select(selector).empty(); + + isCancelled = d3.event.sourceEvent.shiftKey || !isDraggable || context.features().hasHiddenConnections(entity, context.graph()); if (isCancelled) {