| 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
|
|
|