| Index: Source/core/editing/DeleteSelectionCommand.cpp
|
| diff --git a/Source/core/editing/DeleteSelectionCommand.cpp b/Source/core/editing/DeleteSelectionCommand.cpp
|
| index 66ab6ae4aa60e3f5a1f2e4396dac22bd6b386d81..819e8ab8be36d2832199b9e7c607e758fd10cd48 100644
|
| --- a/Source/core/editing/DeleteSelectionCommand.cpp
|
| +++ b/Source/core/editing/DeleteSelectionCommand.cpp
|
| @@ -38,6 +38,8 @@
|
| #include "core/frame/LocalFrame.h"
|
| #include "core/html/HTMLBRElement.h"
|
| #include "core/html/HTMLInputElement.h"
|
| +#include "core/html/HTMLStyleElement.h"
|
| +#include "core/html/HTMLTableRowElement.h"
|
| #include "core/rendering/RenderTableCell.h"
|
| #include "core/rendering/RenderText.h"
|
|
|
| @@ -178,8 +180,8 @@ void DeleteSelectionCommand::initializePositionData()
|
| m_startRoot = editableRootForPosition(start);
|
| m_endRoot = editableRootForPosition(end);
|
|
|
| - m_startTableRow = enclosingNodeOfType(start, &isHTMLTableRowElement);
|
| - m_endTableRow = enclosingNodeOfType(end, &isHTMLTableRowElement);
|
| + m_startTableRow = toHTMLTableRowElement(enclosingNodeOfType(start, &isHTMLTableRowElement));
|
| + m_endTableRow = toHTMLTableRowElement(enclosingNodeOfType(end, &isHTMLTableRowElement));
|
|
|
| // Don't move content out of a table cell.
|
| // If the cell is non-editable, enclosingNodeOfType won't return it by default, so
|
| @@ -400,7 +402,7 @@ void DeleteSelectionCommand::removeNode(PassRefPtrWillBeRawPtr<Node> node, Shoul
|
| CompositeEditCommand::removeNode(node, shouldAssumeContentIsAlwaysEditable);
|
| }
|
|
|
| -static void updatePositionForTextRemoval(Node* node, int offset, int count, Position& position)
|
| +static void updatePositionForTextRemoval(Text* node, int offset, int count, Position& position)
|
| {
|
| if (position.anchorType() != Position::PositionIsOffsetInAnchor || position.containerNode() != node)
|
| return;
|
| @@ -428,9 +430,10 @@ void DeleteSelectionCommand::makeStylingElementsDirectChildrenOfEditableRootToPr
|
| RefPtrWillBeRawPtr<Node> node = range->firstNode();
|
| while (node && node != range->pastLastNode()) {
|
| RefPtrWillBeRawPtr<Node> nextNode = NodeTraversal::next(*node);
|
| - if ((isHTMLStyleElement(*node) && !(toElement(node)->hasAttribute(scopedAttr))) || isHTMLLinkElement(*node)) {
|
| + if ((isHTMLStyleElement(*node) && !toHTMLStyleElement(node)->hasAttribute(scopedAttr))
|
| + || isHTMLLinkElement(*node)) {
|
| nextNode = NodeTraversal::nextSkippingChildren(*node);
|
| - RefPtrWillBeRawPtr<ContainerNode> rootEditableElement = node->rootEditableElement();
|
| + RefPtrWillBeRawPtr<Element> rootEditableElement = node->rootEditableElement();
|
| if (rootEditableElement.get()) {
|
| removeNode(node);
|
| appendNode(node, rootEditableElement);
|
| @@ -758,9 +761,9 @@ void DeleteSelectionCommand::clearTransientState()
|
| void DeleteSelectionCommand::removeRedundantBlocks()
|
| {
|
| Node* node = m_endingPosition.containerNode();
|
| - Node* rootNode = node->rootEditableElement();
|
| + Element* rootElement = node->rootEditableElement();
|
|
|
| - while (node != rootNode) {
|
| + while (node != rootElement) {
|
| if (isRemovableBlock(node)) {
|
| if (node == m_endingPosition.anchorNode())
|
| updatePositionForNodeRemovalPreservingChildren(m_endingPosition, *node);
|
|
|