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!
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.