Reviewed by Maciej
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 20 Mar 2005 16:26:24 +0000 (16:26 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 20 Mar 2005 16:26:24 +0000 (16:26 +0000)
commitf235b9f38cecf361218b92aa305fd9a798c4ba48
tree8705f4f69443f6d114c6c4a554843eaad21f1938
parentf54449140e1a40a8b48aa7507f5524d58e60a3c5
    Reviewed by Maciej

        Fix for this bug:

        <rdar://problem/4059578> Entire list deleted, and caret disappears, when delete key hit at end of list

        The problem is that a new case in the delete code did not consider when the
        downstream end node of the selection might be an ancestor of the upstream start
        node. That is the case in this bug. The downstream end is the body element, and
        this line of code would delete all the children of the downstream end:
            removeChildrenInRangePreservingPosition(m_downstreamEnd.node(), 0,
                m_downstreamEnd.offset(), m_upstreamStart);

        The fix is to check for this "is ancestor" case, and do some tree logic to find
        the right offset of the downstream end node for the call to
        removeChildrenInRangePreservingPosition().

        * khtml/editing/htmlediting.cpp:
        (khtml::DeleteSelectionCommand::handleGeneralDelete): Fixed as described.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8939 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebCore/ChangeLog-2005-08-23
WebCore/khtml/editing/htmlediting.cpp