So it took a while, but I went through all the feedback and tried to come to some kind of conclusion. Thanks for all the participation, everyone!
Feedback So Far
If you’re interested, here are my compiled notes: Node Editor: Improve working with frame nodes - HackMD
Though, I don’t think you’ll gain too much new insight, if you’ve been following this thread.
Overall people didn’t seem to like the node stealing issue, but did enjoy being able to resize the frames to freely add/remove nodes.
Next Experiment
To move the discussion forward, I’m now trying to see if there is a compromise that manages to avoid the pitfalls of node stealing while still giving us some of the nice things from the recent prototype.
Here’s what I came up with:
- Keep the “one frame per node” (parenting) concept for now
There doesn’t seem to be an actual usecase to have multiple frames claim ownership of the same node, so why allow it. - Always add (currently unframed) nodes to frames if they are fully inside the frame
This avoids situations where an (unframed) node is on top of a frame without being part of it for the most part. - Allow resizing frames to add and remove nodes
This works with parenting as long as you accept that you can’t steal nodes from other frames doing this. - Allow unparenting nodes during transform by pressing Shift
Since the feedback on using Alt was a bit mixed, I thought it be good to give this a try as an alternative.
The improvements to frame resizing (Increased hitzone for resizing, Space to move etc.) are still part of the patch.
You can test this version of the patch with this build:
Node Stealing
Is there still node stealing? To some extend, yes. Free/unframed nodes will be joined into a frame that is moved under them, but you won’t have to fear that framed nodes will be stolen by a frame that’s partially overlapping.
I hope that this is a good compromise.
Note: The logic for adding a node to a frame is a bit more nuanced to also allow nodes being added to frames when they are part of the same frame and so on. So “unframed” is just a shorthand for “node that won’t be stolen if it’s added to this frame”.