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