Page MenuHome

Splitting/Joining Feedback
ClosedPublic

Authored by Harley Acheson (harley) on Jan 27 2019, 5:56 PM.
Tokens
"Love" token, awarded by michaelknubben."Love" token, awarded by looch."Love" token, awarded by DotBow."Love" token, awarded by JoshuaKnauber."Love" token, awarded by Zoot."Love" token, awarded by jonathanl."Like" token, awarded by billreynish."Love" token, awarded by Rusculleda."Love" token, awarded by rndmnm."Love" token, awarded by wo262.

Details

Summary

This patch makes the splitting and joining much easier to use. There is feedback and you are able to use the feedback to alter your splitting and joining while they are in progress. So, for example, you can drag into the area, see that you are about split horizontally, then move your mouse down, know that you would now do a vertical split, and proceed. All in smooth and intuitive strokes.

Here are the new mouse cursors you will see before, and during, joins and splits:

Even cooler is that there is now negative feedback for invalid joins. Quite often a join is not possible for a reason that is not immediately obvious. So it would just fail silently. Now you see immediately that you are dragging into an area that can not be joined. And, even better, you can continue to drag to an area that is valid and complete a join!

Patch Details

First, it defines seven new cursors (each in small and large sizes). Two for horizontal and vertical splits, four for each join direction, and a "stopsign" cursor to show when an operation would be invalid.

Actionzone_modal changes from having only one movement threshold to three: splitting, joining, or area reveal. This way each operation can have a different amount of resting space. Area reveal buttons get the smallest, join is quite small, splitting is largest.

These thresholds eliminate the chances of one type of accidental split (leaving an action zone and hitting own area before making it to the intended join area) which means that the angle-restriction is removed. So once more you can drag in any direction.

Then it shows a different cursor the moment you leave the action zone.

It also uses the new splitter cursors for area_split_preview_update_cursor.

area_join_init no longer aborts if the areas don't share an edge. That way it can show the "stopsign" cursor in the invalid areas and you can even correct yourself by moving to a valid area. And then area_join_modal selects a different cursor depending on direction, in case you change direction in the middle of the operation.

Diff Detail

Repository
rB Blender

Event Timeline

Fantastic work @Harley Acheson (harley). I tested, and this is another superb improvement for splitting & joining.

This revision is now accepted and ready to land.Jan 27 2019, 6:16 PM

Thanks @William Reynish (billreynish)!

The changes in here are independent of my proposal to nudge the corner zones right into the corners, so both could be done or neither. But the two patches do touch some of the same areas so there could be commit conflicts. So if one of these is committed I will then update the other.

If we had to do just one of the two patches, it is this one to look at first.

This patch is quite simple and gives a greatly improved experience with the changed behavior and feedback.

The other one just removes the little gap between splitter zones, so the hit areas become contiguous. But it is a more complex patch because of the way we deal with screen areas versus the border between them.

rndmnm awarded a token.Feb 2 2019, 7:06 PM

I think This would be a big quality-of-life improvement for everyone moving to 2.80, as it eliminates a nearly universal source of confusion and frustration.

Yes it's great. Waiting for @Brecht Van Lommel (brecht) to review both of the splitting/joining patches by @Harley Acheson (harley).

If this gets approved and committed I will then propose adding some more cursors as per Gavin's suggestion: Four different "hover" cursors for the corners so you can see which zone you would hit.

But I'd rather do that as a separate, simple patch afterward rather than make this patch (and the approval process) more complicated.

This revision was automatically updated to reflect the committed changes.