Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Unified Diff: Source/core/dom/RenderTreeBuilder.h

Issue 571603003: Convert first letter into a pseudo element. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
};

Powered by Google App Engine
This is Rietveld 408576698