Index: Source/core/dom/RenderTreeBuilder.cpp |
diff --git a/Source/core/dom/RenderTreeBuilder.cpp b/Source/core/dom/RenderTreeBuilder.cpp |
index 7572603e73763b11ab81fd4bb3a7ae75ca1aa8b9..77e718f04f1add9047879d88ace61b0d3646f789 100644 |
--- a/Source/core/dom/RenderTreeBuilder.cpp |
+++ b/Source/core/dom/RenderTreeBuilder.cpp |
@@ -31,6 +31,7 @@ |
#include "core/css/resolver/StyleResolver.h" |
#include "core/dom/Fullscreen.h" |
#include "core/dom/Node.h" |
+#include "core/dom/PseudoElement.h" |
#include "core/dom/Text.h" |
#include "core/rendering/RenderFullScreen.h" |
#include "core/rendering/RenderObject.h" |
@@ -54,6 +55,9 @@ RenderObject* RenderTreeBuilder::nextRenderer() const |
if (m_renderingParent->needsAttach()) |
return 0; |
+ if (element && element->isFirstLetterPseudoElement()) |
+ return element->firstLetterTextRenderer(); |
+ |
return NodeRenderingTraversal::nextSiblingRenderer(m_node); |
} |
@@ -63,6 +67,11 @@ RenderObject* RenderTreeBuilder::parentRenderer() const |
Element* element = m_node->isElementNode() ? toElement(m_node) : 0; |
+ if (element && element->isFirstLetterPseudoElement()) { |
+ RenderObject* nextRenderer = element->firstLetterTextRenderer(); |
+ return nextRenderer ? nextRenderer->parent() : nullptr; |
+ } |
+ |
if (element && m_renderingParent->renderer()) { |
// FIXME: Guarding this by m_renderingParent->renderer() isn't quite right as the spec for |
// top layer only talks about display: none ancestors so putting a <dialog> inside an |