Title: [153688] trunk/Source/WebCore
- Revision
- 153688
- Author
- [email protected]
- Date
- 2013-08-03 03:15:12 -0700 (Sat, 03 Aug 2013)
Log Message
RenderBoxModelObject::firstLetterRemainingText should be a RenderTextFragment*.
<http://webkit.org/b/119181>
Reviewed by Sam Weinig.
De-generalize this code a bit since we know that the firstLetterRemainingText() is always
going to be a RenderTextFragment.
* rendering/RenderBoxModelObject.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::firstLetterRemainingText):
(WebCore::RenderBoxModelObject::setFirstLetterRemainingText):
Make these two deal in RenderTextFragment*.
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::updateFirstLetterStyle):
Tighten up some pointer types so we don't have to cast as much.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (153687 => 153688)
--- trunk/Source/WebCore/ChangeLog 2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/ChangeLog 2013-08-03 10:15:12 UTC (rev 153688)
@@ -1,3 +1,25 @@
+2013-08-03 Andreas Kling <[email protected]>
+
+ RenderBoxModelObject::firstLetterRemainingText should be a RenderTextFragment*.
+ <http://webkit.org/b/119181>
+
+ Reviewed by Sam Weinig.
+
+ De-generalize this code a bit since we know that the firstLetterRemainingText() is always
+ going to be a RenderTextFragment.
+
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::firstLetterRemainingText):
+ (WebCore::RenderBoxModelObject::setFirstLetterRemainingText):
+
+ Make these two deal in RenderTextFragment*.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::updateFirstLetterStyle):
+
+ Tighten up some pointer types so we don't have to cast as much.
+
2013-08-02 Gyuyoung Kim <[email protected]>
Introduce toSVGMaskElement(), and use it
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (153687 => 153688)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2013-08-03 10:15:12 UTC (rev 153688)
@@ -6750,7 +6750,7 @@
if (Node::diff(firstLetter->style(), pseudoStyle, document()) == Node::Detach) {
// The first-letter renderer needs to be replaced. Create a new renderer of the right type.
- RenderObject* newFirstLetter;
+ RenderBoxModelObject* newFirstLetter;
if (pseudoStyle->display() == INLINE)
newFirstLetter = RenderInline::createAnonymous(document());
else
@@ -6766,16 +6766,12 @@
newFirstLetter->addChild(child, 0);
}
- RenderTextFragment* remainingText = 0;
RenderObject* nextSibling = firstLetter->nextSibling();
- RenderObject* remainingTextObject = toRenderBoxModelObject(firstLetter)->firstLetterRemainingText();
- if (remainingTextObject && remainingTextObject->isText() && toRenderText(remainingTextObject)->isTextFragment())
- remainingText = toRenderTextFragment(remainingTextObject);
- if (remainingText) {
+ if (RenderTextFragment* remainingText = toRenderBoxModelObject(firstLetter)->firstLetterRemainingText()) {
ASSERT(remainingText->isAnonymous() || remainingText->node()->renderer() == remainingText);
// Replace the old renderer with the new one.
remainingText->setFirstLetter(newFirstLetter);
- toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText(remainingText);
+ newFirstLetter->setFirstLetterRemainingText(remainingText);
}
// To prevent removal of single anonymous block in RenderBlock::removeChild and causing
// |nextSibling| to go stale, we remove the old first letter using removeChildNode first.
Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (153687 => 153688)
--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp 2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp 2013-08-03 10:15:12 UTC (rev 153688)
@@ -71,7 +71,7 @@
// This HashMap is similar to the continuation map, but connects first-letter
// renderers to their remaining text fragments.
-typedef HashMap<const RenderBoxModelObject*, RenderObject*> FirstLetterRemainingTextMap;
+typedef HashMap<const RenderBoxModelObject*, RenderTextFragment*> FirstLetterRemainingTextMap;
static FirstLetterRemainingTextMap* firstLetterRemainingTextMap = 0;
class ImageQualityController {
@@ -2801,14 +2801,14 @@
}
}
-RenderObject* RenderBoxModelObject::firstLetterRemainingText() const
+RenderTextFragment* RenderBoxModelObject::firstLetterRemainingText() const
{
if (!firstLetterRemainingTextMap)
return 0;
return firstLetterRemainingTextMap->get(this);
}
-void RenderBoxModelObject::setFirstLetterRemainingText(RenderObject* remainingText)
+void RenderBoxModelObject::setFirstLetterRemainingText(RenderTextFragment* remainingText)
{
if (remainingText) {
if (!firstLetterRemainingTextMap)
Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (153687 => 153688)
--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h 2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h 2013-08-03 10:15:12 UTC (rev 153688)
@@ -53,6 +53,7 @@
class KeyframeList;
class InlineFlowBox;
+class RenderTextFragment;
class StickyPositionViewportConstraints;
// This class is the base for all objects that adhere to the CSS box model as described
@@ -273,8 +274,8 @@
public:
// For RenderBlocks and RenderInlines with m_style->styleType() == FIRST_LETTER, this tracks their remaining text fragments
- RenderObject* firstLetterRemainingText() const;
- void setFirstLetterRemainingText(RenderObject*);
+ RenderTextFragment* firstLetterRemainingText() const;
+ void setFirstLetterRemainingText(RenderTextFragment*);
// These functions are only used internally to manipulate the render tree structure via remove/insert/appendChildNode.
// Since they are typically called only to move objects around within anonymous blocks (which only have layers in
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes