flowhub / the-graph

SVG custom elements for FBP graph editing and visualization. Used in noflo/noflo-ui
https://flowhub.github.io/the-graph/demo-full.html
MIT License
1.01k stars 179 forks source link

Dragging to move nodes, create edges unreliable on mouse #363

Open bergie opened 7 years ago

bergie commented 7 years ago

When dragging a node/port with mouse (Chrome OS 60), you sometimes get a canvas pan, sometimes the desired action. With touch it works reliably.

It seems a Hammer.js issue (hammerjs/hammer.js#1113, though that one reporting it wrong way around), but we need to try to find a workaround.

Looking at the events happening, the difference appears to be that with mouse, we are getting first event (mousedown) with correct target, but then the second event (mousemove) is already above a different target, causing the gesture to be detected to the new target, not the original one.

Dragging with mouse:

screenshot 2017-08-10 at 13 17 52

Dragging with touch:

screenshot 2017-08-10 at 13 18 10

Events logged with

hammertime.on("hammer.input", function(ev) {                    
   console.log(ev.pointers[0].type, ev.pointers[0].target, ev.pointers[0].currentTarget);
});

I wonder if we can tweak pan recognizer settings to fix this? http://hammerjs.github.io/recognizer-pan/

bergie commented 7 years ago

We've got this trick in graph nodes to make their bounding boxes larger when moved:

https://github.com/flowhub/the-graph/blob/master/the-graph/the-graph-node.js#L486

One fix might be to do this already on pointerdown instead of waiting for drag recognizer.

KMontag42 commented 6 years ago

I have found that clicking on the node produces the desired action (creating a new edge) consistently as well. Dragging in Chrome Version 62.0.3202.62 (Official Build) (64-bit) on Linux rarely works.