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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 3455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3466 return adjustedPositionRelativeToOffsetParent(location()).y(); | 3466 return adjustedPositionRelativeToOffsetParent(location()).y(); |
3467 } | 3467 } |
3468 | 3468 |
3469 bool RenderBox::hasRelativeLogicalHeight() const | 3469 bool RenderBox::hasRelativeLogicalHeight() const |
3470 { | 3470 { |
3471 return style()->logicalHeight().isPercent() | 3471 return style()->logicalHeight().isPercent() |
3472 || style()->logicalMinHeight().isPercent() | 3472 || style()->logicalMinHeight().isPercent() |
3473 || style()->logicalMaxHeight().isPercent(); | 3473 || style()->logicalMaxHeight().isPercent(); |
3474 } | 3474 } |
3475 | 3475 |
3476 static void markBoxForRelayoutAfterSplit(RenderBox* box) | |
3477 { | |
3478 box->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); | |
3479 } | |
3480 | |
3481 RenderObject* RenderBox::splitAnonymousBoxesAroundChild(RenderObject* beforeChil
d) | |
3482 { | |
3483 bool didSplitParentAnonymousBoxes = false; | |
3484 | |
3485 while (beforeChild->parent() != this) { | |
3486 RenderBox* boxToSplit = toRenderBox(beforeChild->parent()); | |
3487 if (boxToSplit->slowFirstChild() != beforeChild && boxToSplit->isAnonymo
us()) { | |
3488 didSplitParentAnonymousBoxes = true; | |
3489 | |
3490 // We have to split the parent box into two boxes and move children | |
3491 // from |beforeChild| to end into the new post box. | |
3492 RenderBox* postBox = boxToSplit->createAnonymousBoxWithSameTypeAs(th
is); | |
3493 postBox->setChildrenInline(boxToSplit->childrenInline()); | |
3494 RenderBox* parentBox = toRenderBox(boxToSplit->parent()); | |
3495 // We need to invalidate the |parentBox| before inserting the new no
de | |
3496 // so that the table paint invalidation logic knows the structure is
dirty. | |
3497 // See for example RenderTableCell:clippedOverflowRectForPaintInvali
dation. | |
3498 markBoxForRelayoutAfterSplit(parentBox); | |
3499 parentBox->virtualChildren()->insertChildNode(parentBox, postBox, bo
xToSplit->nextSibling()); | |
3500 boxToSplit->moveChildrenTo(postBox, beforeChild, 0, true); | |
3501 | |
3502 markBoxForRelayoutAfterSplit(boxToSplit); | |
3503 markBoxForRelayoutAfterSplit(postBox); | |
3504 | |
3505 beforeChild = postBox; | |
3506 } else | |
3507 beforeChild = boxToSplit; | |
3508 } | |
3509 | |
3510 if (didSplitParentAnonymousBoxes) | |
3511 markBoxForRelayoutAfterSplit(this); | |
3512 | |
3513 ASSERT(beforeChild->parent() == this); | |
3514 return beforeChild; | |
3515 } | |
3516 | |
3517 void RenderBox::savePreviousBorderBoxSizeIfNeeded() | 3476 void RenderBox::savePreviousBorderBoxSizeIfNeeded() |
3518 { | 3477 { |
3519 // If m_rareData is already created, always save. | 3478 // If m_rareData is already created, always save. |
3520 if (!m_rareData) { | 3479 if (!m_rareData) { |
3521 LayoutSize paintInvalidationSize = previousPaintInvalidationRect().size(
); | 3480 LayoutSize paintInvalidationSize = previousPaintInvalidationRect().size(
); |
3522 | 3481 |
3523 // Don't save old border box size if the paint rect is empty because we'
ll | 3482 // Don't save old border box size if the paint rect is empty because we'
ll |
3524 // full invalidate once the paint rect becomes non-empty. | 3483 // full invalidate once the paint rect becomes non-empty. |
3525 if (paintInvalidationSize.isEmpty()) | 3484 if (paintInvalidationSize.isEmpty()) |
3526 return; | 3485 return; |
(...skipping 25 matching lines...) Expand all Loading... |
3552 | 3511 |
3553 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) | 3512 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) |
3554 { | 3513 { |
3555 backgroundColor = style.colorIncludingFallback(CSSPropertyBackgroundColor); | 3514 backgroundColor = style.colorIncludingFallback(CSSPropertyBackgroundColor); |
3556 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); | 3515 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); |
3557 ASSERT(hasBackground == style.hasBackground()); | 3516 ASSERT(hasBackground == style.hasBackground()); |
3558 hasBorder = style.hasBorder(); | 3517 hasBorder = style.hasBorder(); |
3559 } | 3518 } |
3560 | 3519 |
3561 } // namespace blink | 3520 } // namespace blink |
OLD | NEW |