| OLD | NEW |
| 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 5726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5737 LayoutStateDisabler layoutStateDisabler(view()); | 5737 LayoutStateDisabler layoutStateDisabler(view()); |
| 5738 while (RenderObject* child = firstLetter->firstChild()) { | 5738 while (RenderObject* child = firstLetter->firstChild()) { |
| 5739 if (child->isText()) | 5739 if (child->isText()) |
| 5740 toRenderText(child)->removeAndDestroyTextBoxes(); | 5740 toRenderText(child)->removeAndDestroyTextBoxes(); |
| 5741 firstLetter->removeChild(child); | 5741 firstLetter->removeChild(child); |
| 5742 newFirstLetter->addChild(child, 0); | 5742 newFirstLetter->addChild(child, 0); |
| 5743 } | 5743 } |
| 5744 | 5744 |
| 5745 RenderTextFragment* remainingText = 0; | 5745 RenderTextFragment* remainingText = 0; |
| 5746 RenderObject* nextSibling = firstLetter->nextSibling(); | 5746 RenderObject* nextSibling = firstLetter->nextSibling(); |
| 5747 RenderObject* next = nextSibling; | 5747 RenderObject* remainingTextObject = toRenderBoxModelObject(firstLett
er)->firstLetterRemainingText(); |
| 5748 while (next) { | 5748 if (remainingTextObject && remainingTextObject->isText() && toRender
Text(remainingTextObject)->isTextFragment()) |
| 5749 if (next->isText() && toRenderText(next)->isTextFragment()) { | 5749 remainingText = toRenderTextFragment(remainingTextObject); |
| 5750 remainingText = toRenderTextFragment(next); | |
| 5751 break; | |
| 5752 } | |
| 5753 next = next->nextSibling(); | |
| 5754 } | |
| 5755 if (!remainingText && firstLetterContainer->isAnonymousBlock()) { | |
| 5756 // The remaining text fragment could have been wrapped in a diff
erent anonymous block since creation | |
| 5757 RenderObject* nextChild; | |
| 5758 next = firstLetterContainer->nextSibling(); | |
| 5759 while (next && !remainingText) { | |
| 5760 if (next->isAnonymousBlock()) { | |
| 5761 nextChild = next->firstChild(); | |
| 5762 while (nextChild) { | |
| 5763 if (nextChild->isText() && toRenderText(nextChild)->
isTextFragment() | |
| 5764 && (toRenderTextFragment(nextChild)->firstLetter
() == firstLetter)) { | |
| 5765 remainingText = toRenderTextFragment(nextChild); | |
| 5766 break; | |
| 5767 } | |
| 5768 nextChild = nextChild->nextSibling(); | |
| 5769 } | |
| 5770 } else | |
| 5771 break; | |
| 5772 next = next->nextSibling(); | |
| 5773 } | |
| 5774 } | |
| 5775 if (remainingText) { | 5750 if (remainingText) { |
| 5776 ASSERT(remainingText->isAnonymous() || remainingText->node()->re
nderer() == remainingText); | 5751 ASSERT(remainingText->isAnonymous() || remainingText->node()->re
nderer() == remainingText); |
| 5777 // Replace the old renderer with the new one. | 5752 // Replace the old renderer with the new one. |
| 5778 remainingText->setFirstLetter(newFirstLetter); | 5753 remainingText->setFirstLetter(newFirstLetter); |
| 5754 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingT
ext(remainingText); |
| 5779 } | 5755 } |
| 5780 firstLetter->destroy(); | 5756 firstLetter->destroy(); |
| 5781 firstLetter = newFirstLetter; | 5757 firstLetter = newFirstLetter; |
| 5782 firstLetterContainer->addChild(firstLetter, nextSibling); | 5758 firstLetterContainer->addChild(firstLetter, nextSibling); |
| 5783 } else | 5759 } else |
| 5784 firstLetter->setStyle(pseudoStyle); | 5760 firstLetter->setStyle(pseudoStyle); |
| 5785 | 5761 |
| 5786 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genCh
ild = genChild->nextSibling()) { | 5762 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genCh
ild = genChild->nextSibling()) { |
| 5787 if (genChild->isText()) | 5763 if (genChild->isText()) |
| 5788 genChild->setStyle(pseudoStyle); | 5764 genChild->setStyle(pseudoStyle); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5846 // This text fragment might be empty. | 5822 // This text fragment might be empty. |
| 5847 RenderTextFragment* remainingText = | 5823 RenderTextFragment* remainingText = |
| 5848 new (renderArena()) RenderTextFragment(textObj->node() ? textObj->no
de() : textObj->document(), oldText.get(), length, oldText->length() - length); | 5824 new (renderArena()) RenderTextFragment(textObj->node() ? textObj->no
de() : textObj->document(), oldText.get(), length, oldText->length() - length); |
| 5849 remainingText->setStyle(textObj->style()); | 5825 remainingText->setStyle(textObj->style()); |
| 5850 if (remainingText->node()) | 5826 if (remainingText->node()) |
| 5851 remainingText->node()->setRenderer(remainingText); | 5827 remainingText->node()->setRenderer(remainingText); |
| 5852 | 5828 |
| 5853 firstLetterContainer->addChild(remainingText, textObj); | 5829 firstLetterContainer->addChild(remainingText, textObj); |
| 5854 firstLetterContainer->removeChild(textObj); | 5830 firstLetterContainer->removeChild(textObj); |
| 5855 remainingText->setFirstLetter(firstLetter); | 5831 remainingText->setFirstLetter(firstLetter); |
| 5832 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini
ngText); |
| 5856 | 5833 |
| 5857 // construct text fragment for the first letter | 5834 // construct text fragment for the first letter |
| 5858 RenderTextFragment* letter = | 5835 RenderTextFragment* letter = |
| 5859 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); | 5836 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); |
| 5860 letter->setStyle(pseudoStyle); | 5837 letter->setStyle(pseudoStyle); |
| 5861 firstLetter->addChild(letter); | 5838 firstLetter->addChild(letter); |
| 5862 | 5839 |
| 5863 textObj->destroy(); | 5840 textObj->destroy(); |
| 5864 } | 5841 } |
| 5865 } | 5842 } |
| (...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7067 } | 7044 } |
| 7068 | 7045 |
| 7069 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 7046 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
| 7070 { | 7047 { |
| 7071 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); | 7048 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); |
| 7072 } | 7049 } |
| 7073 | 7050 |
| 7074 #endif | 7051 #endif |
| 7075 | 7052 |
| 7076 } // namespace WebCore | 7053 } // namespace WebCore |
| OLD | NEW |