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

Side by Side Diff: Source/WebCore/rendering/RenderBlock.cpp

Issue 10696154: Merge 120639 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1180/
Patch Set: Created 8 years, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 6068 matching lines...) Expand 10 before | Expand all | Expand 10 after
6079 // Replace the old renderer with the new one. 6079 // Replace the old renderer with the new one.
6080 remainingText->setFirstLetter(newFirstLetter); 6080 remainingText->setFirstLetter(newFirstLetter);
6081 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText( remainingText); 6081 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText( remainingText);
6082 } 6082 }
6083 // To prevent removal of single anonymous block in RenderBlock::removeCh ild and causing 6083 // To prevent removal of single anonymous block in RenderBlock::removeCh ild and causing
6084 // |nextSibling| to go stale, we remove the old first letter using remov eChildNode first. 6084 // |nextSibling| to go stale, we remove the old first letter using remov eChildNode first.
6085 firstLetterContainer->virtualChildren()->removeChildNode(firstLetterCont ainer, firstLetter); 6085 firstLetterContainer->virtualChildren()->removeChildNode(firstLetterCont ainer, firstLetter);
6086 firstLetter->destroy(); 6086 firstLetter->destroy();
6087 firstLetter = newFirstLetter; 6087 firstLetter = newFirstLetter;
6088 firstLetterContainer->addChild(firstLetter, nextSibling); 6088 firstLetterContainer->addChild(firstLetter, nextSibling);
6089 } 6089 } else
6090 6090 firstLetter->setStyle(pseudoStyle);
6091 firstLetter->setAnimatableStyle(pseudoStyle);
6092 6091
6093 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genChild = genChild->nextSibling()) { 6092 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genChild = genChild->nextSibling()) {
6094 if (genChild->isText()) 6093 if (genChild->isText())
6095 genChild->setStyle(firstLetter->style()); 6094 genChild->setStyle(pseudoStyle);
6096 } 6095 }
6097 } 6096 }
6098 6097
6099 void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend erObject* currentChild) 6098 void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend erObject* currentChild)
6100 { 6099 {
6101 RenderObject* firstLetterContainer = currentChild->parent(); 6100 RenderObject* firstLetterContainer = currentChild->parent();
6102 RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetter Container); 6101 RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetter Container);
6103 RenderObject* firstLetter = 0; 6102 RenderObject* firstLetter = 0;
6104 if (pseudoStyle->display() == INLINE) 6103 if (pseudoStyle->display() == INLINE)
6105 firstLetter = new (renderArena()) RenderInline(document()); 6104 firstLetter = new (renderArena()) RenderInline(document());
6106 else 6105 else
6107 firstLetter = new (renderArena()) RenderBlock(document()); 6106 firstLetter = new (renderArena()) RenderBlock(document());
6108 6107 firstLetter->setStyle(pseudoStyle);
6109 RefPtr<RenderStyle> temporaryStyle = RenderStyle::create();
6110 temporaryStyle->inheritFrom(firstLetterBlock->style());
6111 firstLetter->setStyle(temporaryStyle);
6112 firstLetterContainer->addChild(firstLetter, currentChild); 6108 firstLetterContainer->addChild(firstLetter, currentChild);
6113
6114 firstLetter->setAnimatableStyle(pseudoStyle);
6115 6109
6116 RenderText* textObj = toRenderText(currentChild); 6110 RenderText* textObj = toRenderText(currentChild);
6117 6111
6118 // The original string is going to be either a generated content string or a DOM node's 6112 // The original string is going to be either a generated content string or a DOM node's
6119 // string. We want the original string before it got transformed in case fi rst-letter has 6113 // string. We want the original string before it got transformed in case fi rst-letter has
6120 // no text-transform or a different text-transform applied to it. 6114 // no text-transform or a different text-transform applied to it.
6121 RefPtr<StringImpl> oldText = textObj->originalText(); 6115 RefPtr<StringImpl> oldText = textObj->originalText();
6122 ASSERT(oldText); 6116 ASSERT(oldText);
6123 6117
6124 if (oldText && oldText->length() > 0) { 6118 if (oldText && oldText->length() > 0) {
(...skipping 27 matching lines...) Expand all
6152 remainingText->node()->setRenderer(remainingText); 6146 remainingText->node()->setRenderer(remainingText);
6153 6147
6154 firstLetterContainer->addChild(remainingText, textObj); 6148 firstLetterContainer->addChild(remainingText, textObj);
6155 firstLetterContainer->removeChild(textObj); 6149 firstLetterContainer->removeChild(textObj);
6156 remainingText->setFirstLetter(firstLetter); 6150 remainingText->setFirstLetter(firstLetter);
6157 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini ngText); 6151 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini ngText);
6158 6152
6159 // construct text fragment for the first letter 6153 // construct text fragment for the first letter
6160 RenderTextFragment* letter = 6154 RenderTextFragment* letter =
6161 new (renderArena()) RenderTextFragment(remainingText->node() ? remai ningText->node() : remainingText->document(), oldText.get(), 0, length); 6155 new (renderArena()) RenderTextFragment(remainingText->node() ? remai ningText->node() : remainingText->document(), oldText.get(), 0, length);
6162 letter->setStyle(firstLetter->style()); 6156 letter->setStyle(pseudoStyle);
6163 firstLetter->addChild(letter); 6157 firstLetter->addChild(letter);
6164 6158
6165 textObj->destroy(); 6159 textObj->destroy();
6166 } 6160 }
6167 } 6161 }
6168 6162
6169 void RenderBlock::updateFirstLetter() 6163 void RenderBlock::updateFirstLetter()
6170 { 6164 {
6171 if (!document()->usesFirstLetterRules()) 6165 if (!document()->usesFirstLetterRules())
6172 return; 6166 return;
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after
7270 } 7264 }
7271 7265
7272 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject) 7266 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject)
7273 { 7267 {
7274 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped MaxY()); 7268 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped MaxY());
7275 } 7269 }
7276 7270
7277 #endif 7271 #endif
7278 7272
7279 } // namespace WebCore 7273 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/page/animation/KeyframeAnimation.cpp ('k') | Source/WebCore/rendering/RenderInline.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698