diff options
author | Feng Qian <> | 2009-04-10 18:11:29 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-04-10 18:11:29 -0700 |
commit | 8f72e70a9fd78eec56623b3a62e68f16b7b27e28 (patch) | |
tree | 181bf9a400c30a1bf34ea6d72560e8d00111d549 /WebCore/editing/MoveSelectionCommand.cpp | |
parent | 7ed56f225e0ade046e1c2178977f72b2d896f196 (diff) | |
download | external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.zip external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.gz external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.bz2 |
AI 145796: Land the WebKit merge @r42026.
Automated import of CL 145796
Diffstat (limited to 'WebCore/editing/MoveSelectionCommand.cpp')
-rw-r--r-- | WebCore/editing/MoveSelectionCommand.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/WebCore/editing/MoveSelectionCommand.cpp b/WebCore/editing/MoveSelectionCommand.cpp index 08587cb..2c656e7 100644 --- a/WebCore/editing/MoveSelectionCommand.cpp +++ b/WebCore/editing/MoveSelectionCommand.cpp @@ -39,7 +39,7 @@ MoveSelectionCommand::MoveSelectionCommand(PassRefPtr<DocumentFragment> fragment void MoveSelectionCommand::doApply() { - Selection selection = endingSelection(); + VisibleSelection selection = endingSelection(); ASSERT(selection.isRange()); Position pos = m_position; @@ -48,14 +48,14 @@ void MoveSelectionCommand::doApply() // Update the position otherwise it may become invalid after the selection is deleted. Node *positionNode = m_position.node(); - int positionOffset = m_position.offset(); + int positionOffset = m_position.m_offset; Position selectionEnd = selection.end(); - int selectionEndOffset = selectionEnd.offset(); + int selectionEndOffset = selectionEnd.m_offset; if (selectionEnd.node() == positionNode && selectionEndOffset < positionOffset) { positionOffset -= selectionEndOffset; Position selectionStart = selection.start(); if (selectionStart.node() == positionNode) { - positionOffset += selectionStart.offset(); + positionOffset += selectionStart.m_offset; } pos = Position(positionNode, positionOffset); } @@ -69,7 +69,11 @@ void MoveSelectionCommand::doApply() if (!pos.node()->inDocument()) pos = endingSelection().start(); - setEndingSelection(Selection(pos, endingSelection().affinity())); + setEndingSelection(VisibleSelection(pos, endingSelection().affinity())); + if (!positionNode->inDocument()) { + // Document was modified out from under us. + return; + } applyCommandToComposite(ReplaceSelectionCommand::create(positionNode->document(), m_fragment, true, m_smartMove)); } |