I've been playing around with the new MagGraph with nodes that snap directly to one another. It works very nicely about 70% of the time, and it's so much neater, but there are a few frustrations that make it less intuitive to me than the old graph layout. So I'm dumping 'em all here! I may create GitHub issues for one or two of these things too, especially if I come up with more concrete ideas for solutions to these.
#MagGraph UX kinks
1 messages · Page 1 of 1 (latest)
Connecting inputs with cables
Dragging a cable over a node now opens a little menu where I have to click on the input I want to connect the cable to. The extra click is surprisingly jarring, especially on nodes with only one valid input - why not just automatically connect to that input, as in the old graph system?
Where there are multiple inputs, I think I would still prefer to have them pop up instantly on hovering over the node with the cable, then I could release my mouse on whichever input I want to connect. That would be more similar to the 3.x way of doing it. I just really don't like the extra click!
Disconnecting cables
Still no shake to disconnect ;-;
(That's really my only complaint here! Manually disconnecting cables does exactly what I expect it to.)
Edit: Aha! It was too good to be true. I can only manually disconnect a cable from an input slot if the input slot is on the left hand side of a node. When a node is positioned so that an input slot snaps to the top, I can't drag that cable to disconnect!
Those little triangles in between connected nodes
Clicking on the triangle creates a node in between the two connected ones, as expected. But only if you click on the top half of the triangle. Hovering over the bottom half of the triangle still causes it to become partially highlighted, but clicking it just selects the lower node. This really confused me for a while.
Multiple outputs
This is my least favourite thing about the new graph. There's a tiiiiiiny triangle that you need to mouse over, then click and hold on, to select the output you want to use. It's super easy to miss! And fiddly to use even if you know it's there.
Perhaps as an alternative, selecting a node could expand it slightly, and bring up each output individually (along with its name). It doesn't solve the problem where pressing Tab always connects to the first output, but T3 had that problem as well so at least I'm used to it.
Disconnecting graph sections
I was able to figure out fairly easily that click-and-hold will un-snap a node from the MagGraph. That feels pretty good on its own. But oh, that's not actually what it does - it selects the node. Dragging a selected node is enough to disconnect it from a MagGraph, but not from a cable graph. It's inconsistent but it makes some amount of sense.
I don't remember where I've used a graph system like this before, but my intuition is telling me that dragging a MagGraph node should only drag all the MagGraph nodes "downstream" from the selected node - so in this screenshot, dragging DrawLines should also drag Transform, Camera, and RenderTarget, but not PairPointsForLines or SamplePointAttributes. The whole block could still be moved around by dragging the topmost node, and individual nodes could still be pulled out by holding down first and then dragging.
(OH! I do remember - it was Scratch! 😅)
Reconnecting graph sections
When you pull a node out of a MagGraph, the graph will:
- Break, if the node in question did some kind of data conversion (eg. DrawLines) - this is quite acceptable
- Collapse down to no longer include the removed node, if the graph can still function without it. This is also quite acceptable!
But, what if you pulled the node out by mistake? You might try to reconnect the node by dragging it back to the place where it used to be. After a bit of struggle, I discovered that this is actually possible by lining up the node in the exact position it would go to after being added to the graph. But I was initially trying to do it by dragging the node and placing my mouse over the little triangle between the two I wanted to connect, and it wasn't doing anything - I was going to write about how I can't add the node back at all! So the snapping window for this action needs to be widened a lot imo.
That's all for now! I'll update if I find anything else that gets in my way.
💡 Hint: Holding Shift while dragging a snapped node will keep the connection.
ah! That's handy to know. I haven't really needed that behaviour yet but I'm sure I'll come across it
I think I might have fixed the connecting to nodes with a single input. A while ago.
I did some experimenting to get rid off the additional click on the context selector popup. But it's tricky.
To do this, you would need to keep the popup open even if the mouse is no longer hovering the operator. It actually tried that initially, but it felt "strange". I might give it another try through.
Yes. the "vertical" connection lines need to become interactive. This still needs to be implement but it's coming.
I can look into the broken shake with high refresh displays.
Uh. This definitely should be fixed. Should be easy.
Yes. Scratch was one of the inspirations. But the idea of "dragging the block" if not dragging something selected is actually coming from Tooll2.
It's one of the things that is incredibly confusing initially, but I've seen many people that fell in love with it.
The inserting of new nodes into a stack really needs so loving. I already improved this quite a bit for inserting into a horizontal stack on the main branch.
I strongly think this should work the opposite way: Dragging a snapped node should keep the connection, using Shift while dragging should break the connection
Okay. I will look into that again.
I think, there now is a compromise: Dragging "from a stack" can disconnect (automatically)
we disscussed about it yesterday evening with MrVux, Also after I posted this comment I was thinking that I need to try ~~ inder~~ in order to see if I like it.
But there a a bunch for edge cases...
OpA
OpB
OpC
Let assume you want to drag OpC between OpA and OpB
inder?
I think it's ok to disconnect when dragging OpB
but this situation :
haha it's soo difficult to think about every situation and make everyone happy 🙂
inder = in order
sorry for the typo
So the logic brought by MrVux is:
- moving ops should not be destructive
- then in order to break a connection we need to hold Shift
I know. But what do you disconnect? I somehow have to track the connections before the move.