Chromium Code Reviews| Index: Source/core/dom/RenderTreeBuilder.h |
| diff --git a/Source/core/dom/RenderTreeBuilder.h b/Source/core/dom/RenderTreeBuilder.h |
| index 30d639c4d921dfedc25c9f910104ecda34f7adc8..98472020a8d8d7d8b31559f676de31a3d7bb13a0 100644 |
| --- a/Source/core/dom/RenderTreeBuilder.h |
| +++ b/Source/core/dom/RenderTreeBuilder.h |
| @@ -27,14 +27,15 @@ |
| #define RenderTreeBuilder_h |
| #include "core/dom/Document.h" |
| +#include "core/dom/FirstLetterPseudoElement.h" |
| #include "core/dom/Node.h" |
| #include "core/dom/NodeRenderingTraversal.h" |
| +#include "core/rendering/RenderObject.h" |
| #include "wtf/RefPtr.h" |
| namespace blink { |
| class ContainerNode; |
| -class RenderObject; |
| class RenderStyle; |
| class RenderTreeBuilder { |
| @@ -55,7 +56,17 @@ public: |
| // Mainly HTMLTextAreaElement::childrenChanged calls HTMLTextFormControlElement::setSelectionRange |
| // which does an updateLayoutIgnorePendingStylesheets. |
| - m_renderingParent = NodeRenderingTraversal::parent(node, &m_parentDetails); |
| + Element* element = node->isElementNode() ? toElement(node) : 0; |
| + if (element && element->isFirstLetterPseudoElement()) { |
| + RenderObject* nextRenderer = FirstLetterPseudoElement::firstLetterTextRenderer(*element); |
| + if (nextRenderer && nextRenderer->parent()) |
|
esprehn
2014/10/11 04:46:20
This should not be inline, this is way too much co
dsinclair
2014/10/14 14:31:27
Done.
|
| + m_renderingParent = nextRenderer->parent(); |
|
esprehn
2014/10/11 04:46:20
m_renderingParent is nullptr either way, so you ca
dsinclair
2014/10/14 14:31:27
Done.
|
| + |
| + } else { |
| + ContainerNode* containerNode = NodeRenderingTraversal::parent(node, &m_parentDetails); |
|
esprehn
2014/10/11 04:46:20
else if (ContainerNode* ...)
dsinclair
2014/10/14 14:31:27
Done.
|
| + if (containerNode) |
| + m_renderingParent = containerNode->renderer(); |
| + } |
| } |
| void createRendererForTextIfNeeded(); |
| @@ -68,7 +79,7 @@ private: |
| RenderStyle& style() const; |
| RawPtrWillBeMember<Node> m_node; |
| - RawPtrWillBeMember<ContainerNode> m_renderingParent; |
| + RawPtrWillBeMember<RenderObject> m_renderingParent; |
|
Julien - ping for review
2014/10/10 22:47:23
I would have liked this change to be in a separate
esprehn
2014/10/11 04:46:20
Hmm, this seems bad. The parent is always supposed
dsinclair
2014/10/14 14:31:27
Acknowledged.
dsinclair
2014/10/14 14:31:27
So, the problem I have specifically, is if you hav
|
| NodeRenderingTraversal::ParentDetails m_parentDetails; |
| mutable RefPtr<RenderStyle> m_style; |
| }; |