On Mon, Sep 23, 2013 at 9:15 AM, Terry Brown <[email protected]>wrote:
I've run in to this many times, the 'insertBefore' example was just the
> most recent.
>
Your complaint is understandable, but I am not likely to consider a fix
now, with 4.11b1 so near.
>
> It seems to me that the API for handling top-level nodes is
> inconveniently inconsistent with the API for handling non-top-level
> nodes.
Maybe, but the underlying vnode methods can't be change now: they are too
important and too fragile.
> What's the simplest way to make it work when invoked on a top level
> node? For top level nodes, p.parent() == None.
>
Modulo undo and redrawing code:
current = c.p
...
if c.hoistStack and current == c.hoistStack[-1].p:
g.warning('can not insert a node before the base of a hoist')
return
...
parent = current.parent()
if current.hasBack():
back = current.getBack()
p = back.insertAfter()
elif parent:
p = parent.insertAsNthChild(0)
else:
p = current.insertAfter()
p.moveToRoot(oldRoot=current)
Yes, this is a bit less elegant than one might hope for, but it's not
nearly bad enough to worry about, imo. In particular, the call to
p.moveToRoot handles a lot of details not likely to be handled by a virtual
root position.
Again, see c.insertHeadlineBefore for full details.
Edward
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/groups/opt_out.