Page MenuHome

UI : More Forgiving Joins
ClosedPublic

Authored by Harley Acheson (harley) on Aug 26 2019, 7:27 PM.

Details

Summary

Joining areas can be very finicky at times because of the need for everything to line up perfectly.

In the simplest cases, this is not a problem. But as your workspace gets more complex with more areas, you might need to manually line up one edge with another in order to start a join. But alignment must be PERFECT. It can look seem perfectly-aligned but will not join if out by a single pixel. Especially difficult if using a tablet pen or if using a high-DPI display.

This patch makes the join a bit more forgiving. Basically adds a bit of wriggle room so it can proceed as long as the alignment is close.

The "wriggle room" is quite small in order to avoid some potential problems with very small areas. In a nutshell you still have to get the edges close. The following image shows two areas aligned well-enough vertically to do a horizontal join (assuming the other horizontal edges are similarly close to each other)

Diff Detail

Repository
rB Blender

Event Timeline

This patch really highlights a weak area in Blender’s subdivision-based UI system. The trouble is that you can easily accidentally make several areas stick together that you didn’t mean to.

So, yes, this patch makes it easier to stick areas, but it also makes it easier to do it by accident.

The system has this inherent tradeoff. Alternatively we could re-consider how the area sticking should work (maybe activated somehow?), or if we even really need it at all.

@William Reynish (billreynish) - So, yes, this patch makes it easier to stick areas, but it also makes it easier to do it by accident.

This patch does not change how neighboring edges can "stick" together (without a way to unstick them).

This patch only makes it possible to JOIN two neighboring areas that would otherwise not allow it because the edges aren't perfect. So doesn't require them to be "stuck" first.

You are right. In that case, this makes sense to do IMO.

Just adding a better example.

The two center areas shown here can be horizontally joined despite their top and bottom edges not lining up perfectly.

Tested. Seems to work well, and makes it a lot easier to join areas.

This revision is now accepted and ready to land.Aug 26 2019, 9:54 PM
This revision was automatically updated to reflect the committed changes.

hello! the problem is back in 2.90

hello! the problem is back in 2.90

Hey Carlos!

Actually it's not BACK; It never really went away.

You had made a similar video last year, demonstrating that some joins could fail, here: https://developer.blender.org/rB6d37654ce8e0d442741d284bb36536aa75078c33

I did make a patch that fixes this PERFECTLY. It just makes sure to align all the shared edges before joining, so they always work. In fact it works so well that the join tolerance can actually be increased so you can join areas that are misaligned even further. However that patch never had anyone review it and we forgot about it. I'll update it and see if I can get some new eyes on it:

https://developer.blender.org/D5719

Awesome work!!
Thanks Harley!!

hello! the problem is back in 2.90

Hey Carlos!

Actually it's not BACK; It never really went away.

You had made a similar video last year, demonstrating that some joins could fail, here: https://developer.blender.org/rB6d37654ce8e0d442741d284bb36536aa75078c33

I did make a patch that fixes this PERFECTLY. It just makes sure to align all the shared edges before joining, so they always work. In fact it works so well that the join tolerance can actually be increased so you can join areas that are misaligned even further. However that patch never had anyone review it and we forgot about it. I'll update it and see if I can get some new eyes on it:

https://developer.blender.org/D5719