summaryrefslogtreecommitdiffstats
path: root/WebCore/editing/MoveSelectionCommand.cpp
diff options
context:
space:
mode:
authorFeng Qian <>2009-04-10 18:11:29 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-04-10 18:11:29 -0700
commit8f72e70a9fd78eec56623b3a62e68f16b7b27e28 (patch)
tree181bf9a400c30a1bf34ea6d72560e8d00111d549 /WebCore/editing/MoveSelectionCommand.cpp
parent7ed56f225e0ade046e1c2178977f72b2d896f196 (diff)
downloadexternal_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.cpp14
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));
}