Diff
Modified: trunk/Source/WebCore/ChangeLog (116797 => 116798)
--- trunk/Source/WebCore/ChangeLog 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/ChangeLog 2012-05-11 20:09:13 UTC (rev 116798)
@@ -1,3 +1,41 @@
+2012-05-11 Shezan Baig <[email protected]>
+
+ Add helper function for node()->rootEditableElement() == node()
+ https://bugs.webkit.org/show_bug.cgi?id=86217
+
+ Reviewed by Ryosuke Niwa.
+
+ Added Node::isRootEditableElement and updated existing code that did
+ (node->rootEditableElement() == node) to use isRootEditableElement
+ instead.
+
+ No new tests. No change in behavior.
+
+ * dom/Node.cpp:
+ (WebCore::Node::isRootEditableElement):
+ (WebCore):
+ * dom/Node.h:
+ (Node):
+ Added new helper function.
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+ * dom/Element.cpp:
+ (WebCore::Element::updateFocusAppearance):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::cloneParagraphUnderNewElement):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::removeNode):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * page/FocusController.cpp:
+ (WebCore::FocusController::setFocusedNode):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::hasLineIfEmpty):
+ * rendering/RenderBlockLineLayout.cpp:
+ (WebCore::RenderBlock::addOverflowFromInlineChildren):
+ Updates to existing code to use the new helper function.
+
2012-05-11 Shawn Singh <[email protected]>
[chromium] Create WebTransformationMatrix interface for chromium platform
Modified: trunk/Source/WebCore/dom/Document.cpp (116797 => 116798)
--- trunk/Source/WebCore/dom/Document.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/dom/Document.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -3689,7 +3689,7 @@
if (oldFocusedNode == this && oldFocusedNode->hasOneRef())
return true;
- if (oldFocusedNode == oldFocusedNode->rootEditableElement())
+ if (oldFocusedNode->isRootEditableElement())
frame()->editor()->didEndEditing();
if (view()) {
@@ -3702,7 +3702,7 @@
}
if (newFocusedNode) {
- if (newFocusedNode == newFocusedNode->rootEditableElement() && !acceptsEditingFocus(newFocusedNode.get())) {
+ if (newFocusedNode->isRootEditableElement() && !acceptsEditingFocus(newFocusedNode.get())) {
// delegate blocks focus change
focusChangeBlocked = true;
goto SetFocusedNodeDone;
@@ -3738,7 +3738,7 @@
}
m_focusedNode->setFocus(true);
- if (m_focusedNode == m_focusedNode->rootEditableElement())
+ if (m_focusedNode->isRootEditableElement())
frame()->editor()->didBeginEditing();
// eww, I suck. set the qt focus correctly
Modified: trunk/Source/WebCore/dom/Element.cpp (116797 => 116798)
--- trunk/Source/WebCore/dom/Element.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/dom/Element.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -1588,7 +1588,7 @@
void Element::updateFocusAppearance(bool /*restorePreviousSelection*/)
{
- if (this == rootEditableElement()) {
+ if (isRootEditableElement()) {
Frame* frame = document()->frame();
if (!frame)
return;
Modified: trunk/Source/WebCore/dom/Node.cpp (116797 => 116798)
--- trunk/Source/WebCore/dom/Node.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/dom/Node.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -1567,6 +1567,11 @@
return 0;
}
+bool Node::isRootEditableElement() const
+{
+ return rendererIsEditable() && isElementNode() && (!parentNode() || !parentNode()->rendererIsEditable() || hasTagName(bodyTag));
+}
+
Element* Node::rootEditableElement(EditableType editableType) const
{
if (editableType == HasEditableAXRole)
Modified: trunk/Source/WebCore/dom/Node.h (116797 => 116798)
--- trunk/Source/WebCore/dom/Node.h 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/dom/Node.h 2012-05-11 20:09:13 UTC (rev 116798)
@@ -271,7 +271,8 @@
// enclosingBlockFlowElement() is deprecated. Use enclosingBlock instead.
Element* enclosingBlockFlowElement() const;
-
+
+ bool isRootEditableElement() const;
Element* rootEditableElement() const;
Element* rootEditableElement(EditableType) const;
Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (116797 => 116798)
--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -971,7 +971,7 @@
RefPtr<Node> lastNode;
RefPtr<Node> outerNode = passedOuterNode;
- if (outerNode == outerNode->rootEditableElement()) {
+ if (outerNode->isRootEditableElement()) {
topNode = blockElement;
lastNode = blockElement;
} else {
Modified: trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp (116797 => 116798)
--- trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -352,7 +352,7 @@
}
}
- if (isTableStructureNode(node.get()) || node == node->rootEditableElement()) {
+ if (isTableStructureNode(node.get()) || node->isRootEditableElement()) {
// Do not remove an element of table structure; remove its contents.
// Likewise for the root editable element.
Node* child = node->firstChild();
Modified: trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp (116797 => 116798)
--- trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -201,7 +201,7 @@
// Create block to be inserted.
RefPtr<Element> blockToInsert;
- if (startBlock == startBlock->rootEditableElement()) {
+ if (startBlock->isRootEditableElement()) {
blockToInsert = createDefaultParagraphElement(document());
nestNewBlock = true;
} else if (shouldUseDefaultParagraphElement(startBlock.get()))
Modified: trunk/Source/WebCore/page/FocusController.cpp (116797 => 116798)
--- trunk/Source/WebCore/page/FocusController.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/page/FocusController.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -611,7 +611,7 @@
return true;
// FIXME: Might want to disable this check for caretBrowsing
- if (oldFocusedNode && oldFocusedNode->rootEditableElement() == oldFocusedNode && !relinquishesEditingFocus(oldFocusedNode))
+ if (oldFocusedNode && oldFocusedNode->isRootEditableElement() && !relinquishesEditingFocus(oldFocusedNode))
return false;
m_page->editorClient()->willSetInputMethodState();
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (116797 => 116798)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -5698,7 +5698,7 @@
if (!node())
return false;
- if (node()->rendererIsEditable() && node()->rootEditableElement() == node())
+ if (node()->isRootEditableElement())
return true;
if (node()->isShadowRoot() && (node()->shadowHost()->hasTagName(inputTag)))
Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (116797 => 116798)
--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp 2012-05-11 20:07:12 UTC (rev 116797)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp 2012-05-11 20:09:13 UTC (rev 116798)
@@ -2668,7 +2668,7 @@
{
LayoutUnit endPadding = hasOverflowClip() ? paddingEnd() : ZERO_LAYOUT_UNIT;
// FIXME: Need to find another way to do this, since scrollbars could show when we don't want them to.
- if (hasOverflowClip() && !endPadding && node() && node()->rendererIsEditable() && node() == node()->rootEditableElement() && style()->isLeftToRightDirection())
+ if (hasOverflowClip() && !endPadding && node() && node()->isRootEditableElement() && style()->isLeftToRightDirection())
endPadding = 1;
for (RootInlineBox* curr = firstRootBox(); curr; curr = curr->nextRootBox()) {
addLayoutOverflow(curr->paddedLayoutOverflowRect(endPadding));