-
justing authored
Reviewed by levi Added to demonstrate fixes: * editing/pasteboard/merge-after-delete-expected.checksum: Added. * editing/pasteboard/merge-after-delete-expected.png: Added. * editing/pasteboard/merge-after-delete-expected.txt: Added. * editing/pasteboard/merge-after-delete.html: Added. * editing/inserting/line-break-expected.checksum: Added. * editing/inserting/line-break-expected.png: Added. * editing/inserting/line-break-expected.txt: Added. * editing/inserting/line-break.html: Added. * editing/inserting/multiple-lines-selected-expected.checksum: Added. * editing/inserting/multiple-lines-selected-expected.png: Added. * editing/inserting/multiple-lines-selected-expected.txt: Added. * editing/inserting/multiple-lines-selected.html: Added. Fixed: * editing/deleting/collapse-whitespace-3587601-fix-expected.txt: * editing/deleting/delete-3775172-fix-expected.txt: * editing/deleting/delete-3928305-fix-expected.txt: * editing/deleting/delete-3959464-fix-expected.checksum: * editing/deleting/delete-3959464-fix-expected.png: * editing/deleting/delete-3959464-fix-expected.txt: * editing/deleting/delete-4038408-fix-expected.checksum: * editing/deleting/delete-4038408-fix-expected.png: * editing/deleting/delete-4038408-fix-expected.txt: * editing/deleting/delete-4038408-fix.html: * editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: * editing/deleting/delete-at-paragraph-boundaries-011-expected.checksum: * editing/deleting/delete-at-paragraph-boundaries-011-expected.png: * editing/deleting/delete-at-paragraph-boundaries-011-expected.txt: * editing/deleting/delete-block-contents-001-expected.txt: * editing/deleting/delete-block-contents-002-expected.txt: * editing/deleting/delete-block-contents-003-expected.txt: * editing/deleting/delete-br-011-expected.checksum: * editing/deleting/delete-br-011-expected.png: * editing/deleting/delete-br-011-expected.txt: * editing/deleting/delete-image-004-expected.txt: * editing/deleting/delete-line-010-expected.txt: * editing/deleting/delete-line-015-expected.txt: * editing/deleting/delete-select-all-001-expected.checksum: * editing/deleting/delete-select-all-001-expected.png: * editing/deleting/delete-select-all-001-expected.txt: * editing/deleting/delete-select-all-002-expected.txt: * editing/deleting/delete-select-all-003-expected.checksum: * editing/deleting/delete-select-all-003-expected.png: * editing/deleting/delete-select-all-003-expected.txt: * editing/execCommand/insertImage-expected.checksum: * editing/execCommand/insertImage-expected.png: * editing/input/attributed-substring-from-range-lines-expected.txt: * editing/input/text-input-controller-expected.txt: * editing/inserting/insert-3654864-fix-expected.txt: * editing/inserting/insert-3659587-fix-expected.txt: * editing/inserting/insert-3775316-fix-expected.txt: * editing/inserting/insert-after-delete-001-expected.txt: * editing/inserting/insert-at-end-01-expected.txt: * editing/inserting/insert-at-end-02-expected.txt: * editing/inserting/insert-br-001-expected.txt: * editing/inserting/insert-br-005-expected.txt: * editing/pasteboard/4076267-3-expected.txt: * editing/pasteboard/4076267-expected.txt: * editing/pasteboard/drag-drop-modifies-page-expected.txt: * editing/pasteboard/paste-4035648-fix-expected.txt: * editing/pasteboard/paste-4039777-fix-expected.checksum: * editing/pasteboard/paste-4039777-fix-expected.png: * editing/pasteboard/paste-4039777-fix-expected.txt: * editing/pasteboard/paste-match-style-001-expected.txt: * editing/pasteboard/paste-match-style-002-expected.txt: * editing/pasteboard/smart-paste-006-expected.txt: * editing/pasteboard/smart-paste-007-expected.txt: * editing/selection/drag-to-contenteditable-iframe-expected.txt: * editing/style/block-style-005-expected.txt: * editing/style/typing-style-002-expected.txt: * editing/unsupported-content/list-delete-001-expected.checksum: * editing/unsupported-content/list-delete-001-expected.png: * editing/unsupported-content/list-delete-001-expected.txt: * editing/unsupported-content/list-delete-002-expected.checksum: * editing/unsupported-content/list-delete-002-expected.png: * editing/unsupported-content/list-delete-002-expected.txt: * editing/unsupported-content/table-delete-001-expected.checksum: * editing/unsupported-content/table-delete-001-expected.png: * editing/unsupported-content/table-delete-001-expected.txt: * editing/unsupported-content/table-delete-003-expected.checksum: * editing/unsupported-content/table-delete-003-expected.png: * editing/unsupported-content/table-delete-003-expected.txt: * fast/text/attributed-substring-from-range.html: WebCore: Reviewed by levi * dom/Node.cpp: (WebCore::Node::firstDescendant): Added. * dom/Node.h: * dom/Range.cpp: Added a constructor that takes in Positions. (WebCore::Range::Range): * dom/Range.h: * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::insertNodeAt): Let this function insert children into empty containers. Calls canHaveChildrenForEditing. (WebCore::CompositeEditCommand::appendNode): Assert that the parent canHaveChildrenForEditing. (WebCore::CompositeEditCommand::moveParagraph): Tell ReplaceSelectionCommand to select the replacement so that moveParagraph's callers have a valid destination after the move. * editing/CompositeEditCommand.h: Moved removeFullySelectedNode to DeleteSelectionCommand, made deleteTextFromNode virtual so that DeleteSelectionCommand can update it's endingPosition. * editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::DeleteSelectionCommand): Removed m_startNode, used a local variable. (WebCore::DeleteSelectionCommand::initializeStartEnd): Fixed special element expansion. (WebCore::DeleteSelectionCommand::initializePositionData): Compute the endingPosition up front and keep track of it as nodes and text are removed. (WebCore::DeleteSelectionCommand::handleSpecialCaseBRDelete): Removed use of m_startNode. (WebCore::DeleteSelectionCommand::removeFullySelectedNode): Moved from CompositeEditCommand. Update m_endingPosition as we remove nodes. (WebCore::DeleteSelectionCommand::deleteTextFromNode): Update m_endingPosition as we delete text. (WebCore::DeleteSelectionCommand::handleGeneralDelete): Retain the start block. Cleaned up. (WebCore::DeleteSelectionCommand::mergeParagraphs): Recompute m_endingPosition since moveParagraph clobbers the old one. (WebCore::DeleteSelectionCommand::doApply): Fixed the logic for placeholder insertion after deletion. Make the placeholder decision before we do special element expansion. * editing/DeleteSelectionCommand.h: * editing/InsertLineBreakCommand.cpp: (WebCore::InsertLineBreakCommand::doApply): Fixed a bug where an extra br was inserted and cleaned up the code. * editing/InsertParagraphSeparatorCommand.cpp: (WebCore::InsertParagraphSeparatorCommand::doApply): Deletion of the current selection should do a merge (added a testcase). * editing/RebalanceWhitespaceCommand.cpp: (WebCore::RebalanceWhitespaceCommand::doUnapply): Remove/insert in a way that will trigger a layout. * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply): Ditto. Merge even when the incoming fragment has interchange newlines (added a testcase). Merge when the selection being pasted into starts at the start of a block because not doing so would leave one or more hanging empty blocks. (WebCore::ReplaceSelectionCommand::completeHTMLReplacement): Rebalance whitespace using rebalanceWhitespaceAt because rebalanceWhitespace requires a selection, and a selection can't be created until whitespace has been rebalanced. * editing/htmlediting.cpp: (WebCore::canHaveChildrenForEditing): Added. * editing/htmlediting.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@14751 268f45cc-cd09-0410-ab3c-d52691b4dbfc
11ec52ed