My reasoning is that it’s dangerous for children to follow the wrong item, because you might collapse them and delete all the children without realizing they moved items unintuitively. Personally, it’s unintuitive for them to follow the last character. I consider the first characters the item, the anchor, and the last character is usually a trailing thought that could easily be moved to the children at any time. The fact that trailing thoughts seemingly kidnap the children items scares me and has caused data loss when I don’t notice it happen.
current behavior, children follow last character
proposed behavior, children follow first character
Yeah, BigChungus, you’re right. It’s downright wacky and counter-intuitive for the children to be attached to “another lamp” as their parent, rather than to “Target”. Not sure, though, that I entirely agree with your solution. It’s fine, and probably is the most economical choice in most cases–which of course is why you chose it, but I might suggest leaving the children with the “target” parent, and making “another lamp” a sibling of “target” down at the bottom of your screen example. Reason being that it better embodies the idea of “splitting” one item into “two items” (at the same level). And if it’s sometimes more awkward to do it that way, at least there are NO side effects, and the user has to MANUALLY change “another lamp”'s level and make it a child of “Target”.
I can’t see why anyone would want the current algorithm as you describe it. It’s clearly just a bug. Either the parent item should be conceptualized as “Mom and Little Billy”, as you did, or it should be conceptualized as “Peaches and Cream”, as I did. The current algorithm conceptualizes it as “Little Billy and Mom”, and for no reason. Probably the best answer is that it should be conceptualized your way, when it stands alone with no children yet. And it should be conceptualized my way when it already has one or more children.
I look at it like this: Is it easy enough to get the result you’re looking for, because I want each result in different circumstances, depending on the context.
I see 3 desirable results:
new node created as first child
select to end of line (shift+end), cut (shift+delete), enter, paste (shift+insert)
new node created as sibling and children belong to new node.
(just press enter)
new node created as sibling, children remain with the first
(Collapse the node (ctrl+period is my shortcut) and press enter in the middle of the line.)
The first works because enter at the end of a line is different from enter in the middle of a line. It might seem more natural to change the middle to also create a new child, but then what if you want the third result?