Index: Source/WebCore/editing/CompositeEditCommand.cpp |
=================================================================== |
--- Source/WebCore/editing/CompositeEditCommand.cpp (revision 120115) |
+++ Source/WebCore/editing/CompositeEditCommand.cpp (working copy) |
@@ -1247,14 +1247,14 @@ |
// FIXME: Send an appropriate shouldDeleteRange call. |
bool CompositeEditCommand::breakOutOfEmptyListItem() |
{ |
- Node* emptyListItem = enclosingEmptyListItem(endingSelection().visibleStart()); |
+ RefPtr<Node> emptyListItem = enclosingEmptyListItem(endingSelection().visibleStart()); |
if (!emptyListItem) |
return false; |
RefPtr<EditingStyle> style = EditingStyle::create(endingSelection().start()); |
style->mergeTypingStyle(document()); |
- ContainerNode* listNode = emptyListItem->parentNode(); |
+ RefPtr<ContainerNode> listNode = emptyListItem->parentNode(); |
// FIXME: Can't we do something better when the immediate parent wasn't a list node? |
if (!listNode |
|| (!listNode->hasTagName(ulTag) && !listNode->hasTagName(olTag)) |
@@ -1265,7 +1265,7 @@ |
RefPtr<Element> newBlock = 0; |
if (ContainerNode* blockEnclosingList = listNode->parentNode()) { |
if (blockEnclosingList->hasTagName(liTag)) { // listNode is inside another list item |
- if (visiblePositionAfterNode(blockEnclosingList) == visiblePositionAfterNode(listNode)) { |
+ if (visiblePositionAfterNode(blockEnclosingList) == visiblePositionAfterNode(listNode.get())) { |
// If listNode appears at the end of the outer list item, then move listNode outside of this list item |
// e.g. <ul><li>hello <ul><li><br></li></ul> </li></ul> should become <ul><li>hello</li> <ul><li><br></li></ul> </ul> after this section |
// If listNode does NOT appear at the end, then we should consider it as a regular paragraph. |
@@ -1281,12 +1281,12 @@ |
if (!newBlock) |
newBlock = createDefaultParagraphElement(document()); |
- Node* previousListNode = emptyListItem->isElementNode() ? toElement(emptyListItem)->previousElementSibling(): emptyListItem->previousSibling(); |
- Node* nextListNode = emptyListItem->isElementNode() ? toElement(emptyListItem)->nextElementSibling(): emptyListItem->nextSibling(); |
- if (isListItem(nextListNode) || isListElement(nextListNode)) { |
+ RefPtr<Node> previousListNode = emptyListItem->isElementNode() ? toElement(emptyListItem.get())->previousElementSibling(): emptyListItem->previousSibling(); |
+ RefPtr<Node> nextListNode = emptyListItem->isElementNode() ? toElement(emptyListItem.get())->nextElementSibling(): emptyListItem->nextSibling(); |
+ if (isListItem(nextListNode.get()) || isListElement(nextListNode.get())) { |
// If emptyListItem follows another list item or nested list, split the list node. |
- if (isListItem(previousListNode) || isListElement(previousListNode)) |
- splitElement(static_cast<Element*>(listNode), emptyListItem); |
+ if (isListItem(previousListNode.get()) || isListElement(previousListNode.get())) |
+ splitElement(static_cast<Element*>(listNode.get()), emptyListItem); |
// If emptyListItem is followed by other list item or nested list, then insert newBlock before the list node. |
// Because we have splitted the element, emptyListItem is the first element in the list node. |
@@ -1297,7 +1297,7 @@ |
// When emptyListItem does not follow any list item or nested list, insert newBlock after the enclosing list node. |
// Remove the enclosing node if emptyListItem is the only child; otherwise just remove emptyListItem. |
insertNodeAfter(newBlock, listNode); |
- removeNode(isListItem(previousListNode) || isListElement(previousListNode) ? emptyListItem : listNode); |
+ removeNode(isListItem(previousListNode.get()) || isListElement(previousListNode.get()) ? emptyListItem.get() : listNode.get()); |
} |
appendBlockPlaceholder(newBlock); |