| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #include "config.h" | 26 #include "config.h" |
| 27 #include "core/editing/CompositeEditCommand.h" | 27 #include "core/editing/CompositeEditCommand.h" |
| 28 | 28 |
| 29 #include "HTMLNames.h" | 29 #include "HTMLNames.h" |
| 30 #include "bindings/v8/ExceptionStatePlaceholder.h" | 30 #include "bindings/v8/ExceptionStatePlaceholder.h" |
| 31 #include "core/dom/Document.h" | 31 #include "core/dom/Document.h" |
| 32 #include "core/dom/DocumentFragment.h" | 32 #include "core/dom/DocumentFragment.h" |
| 33 #include "core/dom/DocumentMarkerController.h" | 33 #include "core/dom/DocumentMarkerController.h" |
| 34 #include "core/dom/ElementTraversal.h" |
| 34 #include "core/dom/NodeTraversal.h" | 35 #include "core/dom/NodeTraversal.h" |
| 35 #include "core/dom/Range.h" | 36 #include "core/dom/Range.h" |
| 36 #include "core/events/ScopedEventQueue.h" | |
| 37 #include "core/dom/Text.h" | 37 #include "core/dom/Text.h" |
| 38 #include "core/editing/AppendNodeCommand.h" | 38 #include "core/editing/AppendNodeCommand.h" |
| 39 #include "core/editing/ApplyStyleCommand.h" | 39 #include "core/editing/ApplyStyleCommand.h" |
| 40 #include "core/editing/DeleteFromTextNodeCommand.h" | 40 #include "core/editing/DeleteFromTextNodeCommand.h" |
| 41 #include "core/editing/DeleteSelectionCommand.h" | 41 #include "core/editing/DeleteSelectionCommand.h" |
| 42 #include "core/editing/Editor.h" | 42 #include "core/editing/Editor.h" |
| 43 #include "core/editing/InsertIntoTextNodeCommand.h" | 43 #include "core/editing/InsertIntoTextNodeCommand.h" |
| 44 #include "core/editing/InsertLineBreakCommand.h" | 44 #include "core/editing/InsertLineBreakCommand.h" |
| 45 #include "core/editing/InsertNodeBeforeCommand.h" | 45 #include "core/editing/InsertNodeBeforeCommand.h" |
| 46 #include "core/editing/InsertParagraphSeparatorCommand.h" | 46 #include "core/editing/InsertParagraphSeparatorCommand.h" |
| 47 #include "core/editing/MergeIdenticalElementsCommand.h" | 47 #include "core/editing/MergeIdenticalElementsCommand.h" |
| 48 #include "core/editing/PlainTextRange.h" | 48 #include "core/editing/PlainTextRange.h" |
| 49 #include "core/editing/RemoveCSSPropertyCommand.h" | 49 #include "core/editing/RemoveCSSPropertyCommand.h" |
| 50 #include "core/editing/RemoveNodeCommand.h" | 50 #include "core/editing/RemoveNodeCommand.h" |
| 51 #include "core/editing/RemoveNodePreservingChildrenCommand.h" | 51 #include "core/editing/RemoveNodePreservingChildrenCommand.h" |
| 52 #include "core/editing/ReplaceNodeWithSpanCommand.h" | 52 #include "core/editing/ReplaceNodeWithSpanCommand.h" |
| 53 #include "core/editing/ReplaceSelectionCommand.h" | 53 #include "core/editing/ReplaceSelectionCommand.h" |
| 54 #include "core/editing/SetNodeAttributeCommand.h" | 54 #include "core/editing/SetNodeAttributeCommand.h" |
| 55 #include "core/editing/SpellChecker.h" | 55 #include "core/editing/SpellChecker.h" |
| 56 #include "core/editing/SplitElementCommand.h" | 56 #include "core/editing/SplitElementCommand.h" |
| 57 #include "core/editing/SplitTextNodeCommand.h" | 57 #include "core/editing/SplitTextNodeCommand.h" |
| 58 #include "core/editing/SplitTextNodeContainingElementCommand.h" | 58 #include "core/editing/SplitTextNodeContainingElementCommand.h" |
| 59 #include "core/editing/TextIterator.h" | 59 #include "core/editing/TextIterator.h" |
| 60 #include "core/editing/VisibleUnits.h" | 60 #include "core/editing/VisibleUnits.h" |
| 61 #include "core/editing/WrapContentsInDummySpanCommand.h" | 61 #include "core/editing/WrapContentsInDummySpanCommand.h" |
| 62 #include "core/editing/htmlediting.h" | 62 #include "core/editing/htmlediting.h" |
| 63 #include "core/editing/markup.h" | 63 #include "core/editing/markup.h" |
| 64 #include "core/events/ScopedEventQueue.h" |
| 64 #include "core/html/HTMLElement.h" | 65 #include "core/html/HTMLElement.h" |
| 65 #include "core/frame/Frame.h" | 66 #include "core/frame/Frame.h" |
| 66 #include "core/rendering/InlineTextBox.h" | 67 #include "core/rendering/InlineTextBox.h" |
| 67 #include "core/rendering/RenderBlock.h" | 68 #include "core/rendering/RenderBlock.h" |
| 68 #include "core/rendering/RenderText.h" | 69 #include "core/rendering/RenderText.h" |
| 69 | 70 |
| 70 using namespace std; | 71 using namespace std; |
| 71 | 72 |
| 72 namespace WebCore { | 73 namespace WebCore { |
| 73 | 74 |
| (...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1276 newBlock = createListItemElement(document()); | 1277 newBlock = createListItemElement(document()); |
| 1277 } | 1278 } |
| 1278 // If listNode does NOT appear at the end of the outer list item, th
en behave as if in a regular paragraph. | 1279 // If listNode does NOT appear at the end of the outer list item, th
en behave as if in a regular paragraph. |
| 1279 } else if (blockEnclosingList->hasTagName(olTag) || blockEnclosingList->
hasTagName(ulTag)) { | 1280 } else if (blockEnclosingList->hasTagName(olTag) || blockEnclosingList->
hasTagName(ulTag)) { |
| 1280 newBlock = createListItemElement(document()); | 1281 newBlock = createListItemElement(document()); |
| 1281 } | 1282 } |
| 1282 } | 1283 } |
| 1283 if (!newBlock) | 1284 if (!newBlock) |
| 1284 newBlock = createDefaultParagraphElement(document()); | 1285 newBlock = createDefaultParagraphElement(document()); |
| 1285 | 1286 |
| 1286 RefPtr<Node> previousListNode = emptyListItem->isElementNode() ? toElement(e
mptyListItem)->previousElementSibling(): emptyListItem->previousSibling(); | 1287 RefPtr<Node> previousListNode = emptyListItem->isElementNode() ? ElementTrav
ersal::previousSibling(*emptyListItem): emptyListItem->previousSibling(); |
| 1287 RefPtr<Node> nextListNode = emptyListItem->isElementNode() ? toElement(empty
ListItem)->nextElementSibling(): emptyListItem->nextSibling(); | 1288 RefPtr<Node> nextListNode = emptyListItem->isElementNode() ? ElementTraversa
l::nextSibling(*emptyListItem): emptyListItem->nextSibling(); |
| 1288 if (isListItem(nextListNode.get()) || isListElement(nextListNode.get())) { | 1289 if (isListItem(nextListNode.get()) || isListElement(nextListNode.get())) { |
| 1289 // If emptyListItem follows another list item or nested list, split the
list node. | 1290 // If emptyListItem follows another list item or nested list, split the
list node. |
| 1290 if (isListItem(previousListNode.get()) || isListElement(previousListNode
.get())) | 1291 if (isListItem(previousListNode.get()) || isListElement(previousListNode
.get())) |
| 1291 splitElement(toElement(listNode), emptyListItem); | 1292 splitElement(toElement(listNode), emptyListItem); |
| 1292 | 1293 |
| 1293 // If emptyListItem is followed by other list item or nested list, then
insert newBlock before the list node. | 1294 // If emptyListItem is followed by other list item or nested list, then
insert newBlock before the list node. |
| 1294 // Because we have splitted the element, emptyListItem is the first elem
ent in the list node. | 1295 // Because we have splitted the element, emptyListItem is the first elem
ent in the list node. |
| 1295 // i.e. insert newBlock before ul or ol whose first element is emptyList
Item | 1296 // i.e. insert newBlock before ul or ol whose first element is emptyList
Item |
| 1296 insertNodeBefore(newBlock, listNode); | 1297 insertNodeBefore(newBlock, listNode); |
| 1297 removeNode(emptyListItem); | 1298 removeNode(emptyListItem); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1453 return node.release(); | 1454 return node.release(); |
| 1454 } | 1455 } |
| 1455 | 1456 |
| 1456 PassRefPtr<Element> createBlockPlaceholderElement(Document& document) | 1457 PassRefPtr<Element> createBlockPlaceholderElement(Document& document) |
| 1457 { | 1458 { |
| 1458 RefPtr<Element> breakNode = document.createElement(brTag, false); | 1459 RefPtr<Element> breakNode = document.createElement(brTag, false); |
| 1459 return breakNode.release(); | 1460 return breakNode.release(); |
| 1460 } | 1461 } |
| 1461 | 1462 |
| 1462 } // namespace WebCore | 1463 } // namespace WebCore |
| OLD | NEW |