Modes to move canvas nodes with either immediate or all downstream connections

Use case or problem

There are many instances where it would be much easier to arrange the canvas if it were possible to simultaneously move a node and either all of its immediate connections or all of its downstream connections.

Proposed solution

Perhaps there could be toggles or modifier keys to initiate modes where it would be possible to do this.

Current workaround (optional)

Groups work pretty well when nodes are very nearby each other but become somewhat unwieldy for this purpose even at short distance separations between nodes.

Thanks!

3 Likes

I agree. I’m finding myself needing to do this moving-a-branch-of-nodes thing a lot.

Alternate proposed solution
Add functionality + keyboard shortcut to select all the downstream connected nodes.
So that moving those nodes is just moving your selected nodes as usual.

This may have the added benefit of being able to modify the selection before you perform movement. Because not every canvas graph may conform to the idea of “downstream nodes” (eg, it could be circular? or there could be a distant node that’s only remotely connected rather than semantically belonging to another node in the “previous” or “parent” or “category” sense). So being able to preview the selection and modify it before moving might be beneficial.

1 Like

+1

Here is a good example from SideFX Houdini. If you hold Ctrl or Cmd, it moves the entire down-branch. If you hold Shift, it moves the entire up-branch.

Notice a design complexity: Should nodes that are children of upstream nodes, but not direct parents of the target node move or not? For Houdini, they don’t.

houdiniGraphMove

1 Like

Love it!

To get the best of both worlds, perhaps holding ctrl and shift simultaneously while moving a node could affect upstream nodes as well as children of upstream nodes.

The behavior of independently holding ctrl or shift while dragging a node could match the behavior in Houdini, as described.

Thanks!

1 Like

Yeah good idea.

The only other problem being that Canvas doesn’t actually have a direction. You (the devs or a plugin developer) could use the direction of arrows to assume a hierarchy, but it isn’t explicitly a directional graph.

And then how would bidirectional arrows or cycles work? Maybe someone smart with graph theory knows, but I can imagine it becoming complex and weird, since there are no limitations or explicit structure to the arrows.

screenshot_2024-02-06_11-10-24

1 Like

True. Very interesting problem to try to solve. I’d definitely have to think about it. Great point.

Off the top, I would say that for more complex scenarios like this, the modifier key behavior could be toggled off. If you decided to keep it toggled on you would be at the mercy of some of the weirdness that would arise.

But to treat these complex use cases, maybe a hotkey could initiate a mode (or multiple hotkeys could initiate multiple different modes) that would work regardless of the complex move situational toggle. Only one mode could be used at once. And depending on the mode initiated, a click (or sequence of clicks) in conjunction with the current selected node (or nodes) would define the required direction/intention well enough to let the “correct” nodes hitch a ride.

Seems like it would be a cool plugin or feature. Maybe someday! Thanks!