| 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 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights 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 5598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5609 LayoutStateDisabler layoutStateDisabler(view()); | 5609 LayoutStateDisabler layoutStateDisabler(view()); |
| 5610 while (RenderObject* child = firstLetter->firstChild()) { | 5610 while (RenderObject* child = firstLetter->firstChild()) { |
| 5611 if (child->isText()) | 5611 if (child->isText()) |
| 5612 toRenderText(child)->removeAndDestroyTextBoxes(); | 5612 toRenderText(child)->removeAndDestroyTextBoxes(); |
| 5613 firstLetter->removeChild(child); | 5613 firstLetter->removeChild(child); |
| 5614 newFirstLetter->addChild(child, 0); | 5614 newFirstLetter->addChild(child, 0); |
| 5615 } | 5615 } |
| 5616 | 5616 |
| 5617 RenderTextFragment* remainingText = 0; | 5617 RenderTextFragment* remainingText = 0; |
| 5618 RenderObject* nextSibling = firstLetter->nextSibling(); | 5618 RenderObject* nextSibling = firstLetter->nextSibling(); |
| 5619 RenderObject* next = nextSibling; | 5619 RenderObject* remainingTextObject = toRenderBoxModelObject(firstLett
er)->firstLetterRemainingText(); |
| 5620 while (next) { | 5620 if (remainingTextObject && remainingTextObject->isText() && toRender
Text(remainingTextObject)->isTextFragment()) |
| 5621 if (next->isText() && toRenderText(next)->isTextFragment()) { | 5621 remainingText = toRenderTextFragment(remainingTextObject); |
| 5622 remainingText = toRenderTextFragment(next); | |
| 5623 break; | |
| 5624 } | |
| 5625 next = next->nextSibling(); | |
| 5626 } | |
| 5627 if (!remainingText && firstLetterContainer->isAnonymousBlock()) { | |
| 5628 // The remaining text fragment could have been wrapped in a diff
erent anonymous block since creation | |
| 5629 RenderObject* nextChild; | |
| 5630 next = firstLetterContainer->nextSibling(); | |
| 5631 while (next && !remainingText) { | |
| 5632 if (next->isAnonymousBlock()) { | |
| 5633 nextChild = next->firstChild(); | |
| 5634 while (nextChild) { | |
| 5635 if (nextChild->isText() && toRenderText(nextChild)->
isTextFragment() | |
| 5636 && (toRenderTextFragment(nextChild)->firstLetter
() == firstLetter)) { | |
| 5637 remainingText = toRenderTextFragment(nextChild); | |
| 5638 break; | |
| 5639 } | |
| 5640 nextChild = nextChild->nextSibling(); | |
| 5641 } | |
| 5642 } else | |
| 5643 break; | |
| 5644 next = next->nextSibling(); | |
| 5645 } | |
| 5646 } | |
| 5647 if (remainingText) { | 5622 if (remainingText) { |
| 5648 ASSERT(remainingText->isAnonymous() || remainingText->node()->re
nderer() == remainingText); | 5623 ASSERT(remainingText->isAnonymous() || remainingText->node()->re
nderer() == remainingText); |
| 5649 // Replace the old renderer with the new one. | 5624 // Replace the old renderer with the new one. |
| 5650 remainingText->setFirstLetter(newFirstLetter); | 5625 remainingText->setFirstLetter(newFirstLetter); |
| 5626 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingT
ext(remainingText); |
| 5651 } | 5627 } |
| 5652 firstLetter->destroy(); | 5628 firstLetter->destroy(); |
| 5653 firstLetter = newFirstLetter; | 5629 firstLetter = newFirstLetter; |
| 5654 firstLetterContainer->addChild(firstLetter, nextSibling); | 5630 firstLetterContainer->addChild(firstLetter, nextSibling); |
| 5655 } else | 5631 } else |
| 5656 firstLetter->setStyle(pseudoStyle); | 5632 firstLetter->setStyle(pseudoStyle); |
| 5657 | 5633 |
| 5658 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genCh
ild = genChild->nextSibling()) { | 5634 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genCh
ild = genChild->nextSibling()) { |
| 5659 if (genChild->isText()) | 5635 if (genChild->isText()) |
| 5660 genChild->setStyle(pseudoStyle); | 5636 genChild->setStyle(pseudoStyle); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5718 // This text fragment might be empty. | 5694 // This text fragment might be empty. |
| 5719 RenderTextFragment* remainingText = | 5695 RenderTextFragment* remainingText = |
| 5720 new (renderArena()) RenderTextFragment(textObj->node() ? textObj->no
de() : textObj->document(), oldText.get(), length, oldText->length() - length); | 5696 new (renderArena()) RenderTextFragment(textObj->node() ? textObj->no
de() : textObj->document(), oldText.get(), length, oldText->length() - length); |
| 5721 remainingText->setStyle(textObj->style()); | 5697 remainingText->setStyle(textObj->style()); |
| 5722 if (remainingText->node()) | 5698 if (remainingText->node()) |
| 5723 remainingText->node()->setRenderer(remainingText); | 5699 remainingText->node()->setRenderer(remainingText); |
| 5724 | 5700 |
| 5725 firstLetterContainer->addChild(remainingText, textObj); | 5701 firstLetterContainer->addChild(remainingText, textObj); |
| 5726 firstLetterContainer->removeChild(textObj); | 5702 firstLetterContainer->removeChild(textObj); |
| 5727 remainingText->setFirstLetter(firstLetter); | 5703 remainingText->setFirstLetter(firstLetter); |
| 5704 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini
ngText); |
| 5728 | 5705 |
| 5729 // construct text fragment for the first letter | 5706 // construct text fragment for the first letter |
| 5730 RenderTextFragment* letter = | 5707 RenderTextFragment* letter = |
| 5731 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); | 5708 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); |
| 5732 letter->setStyle(pseudoStyle); | 5709 letter->setStyle(pseudoStyle); |
| 5733 firstLetter->addChild(letter); | 5710 firstLetter->addChild(letter); |
| 5734 | 5711 |
| 5735 textObj->destroy(); | 5712 textObj->destroy(); |
| 5736 } | 5713 } |
| 5737 } | 5714 } |
| (...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6939 } | 6916 } |
| 6940 | 6917 |
| 6941 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 6918 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
| 6942 { | 6919 { |
| 6943 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); | 6920 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); |
| 6944 } | 6921 } |
| 6945 | 6922 |
| 6946 #endif | 6923 #endif |
| 6947 | 6924 |
| 6948 } // namespace WebCore | 6925 } // namespace WebCore |
| OLD | NEW |