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 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. 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 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 | 207 |
208 bool RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight() const | 208 bool RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight() const |
209 { | 209 { |
210 Length logicalHeightLength = style()->logicalHeight(); | 210 Length logicalHeightLength = style()->logicalHeight(); |
211 if (logicalHeightLength.isAuto()) | 211 if (logicalHeightLength.isAuto()) |
212 return true; | 212 return true; |
213 | 213 |
214 // For percentage heights: The percentage is calculated with respect to the
height of the generated box's | 214 // For percentage heights: The percentage is calculated with respect to the
height of the generated box's |
215 // containing block. If the height of the containing block is not specified
explicitly (i.e., it depends | 215 // containing block. If the height of the containing block is not specified
explicitly (i.e., it depends |
216 // on content height), and this element is not absolutely positioned, the va
lue computes to 'auto'. | 216 // on content height), and this element is not absolutely positioned, the va
lue computes to 'auto'. |
217 if (!logicalHeightLength.isPercent() || isOutOfFlowPositioned() || document(
)->inQuirksMode()) | 217 if (!logicalHeightLength.isPercent() || isOutOfFlowPositioned() || document(
).inQuirksMode()) |
218 return false; | 218 return false; |
219 | 219 |
220 // Anonymous block boxes are ignored when resolving percentage values that w
ould refer to it: | 220 // Anonymous block boxes are ignored when resolving percentage values that w
ould refer to it: |
221 // the closest non-anonymous ancestor box is used instead. | 221 // the closest non-anonymous ancestor box is used instead. |
222 RenderBlock* cb = containingBlock(); | 222 RenderBlock* cb = containingBlock(); |
223 while (cb->isAnonymous()) | 223 while (cb->isAnonymous()) |
224 cb = cb->containingBlock(); | 224 cb = cb->containingBlock(); |
225 | 225 |
226 // Matching RenderBox::percentageLogicalHeightIsResolvableFromBlock() by | 226 // Matching RenderBox::percentageLogicalHeightIsResolvableFromBlock() by |
227 // ignoring table cell's attribute value, where it says that table cells vio
late | 227 // ignoring table cell's attribute value, where it says that table cells vio
late |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 bool hasRoundedBorder = style()->hasBorderRadius() && (includeLeftEdge || in
cludeRightEdge); | 533 bool hasRoundedBorder = style()->hasBorderRadius() && (includeLeftEdge || in
cludeRightEdge); |
534 bool clippedWithLocalScrolling = hasOverflowClip() && bgLayer->attachment()
== LocalBackgroundAttachment; | 534 bool clippedWithLocalScrolling = hasOverflowClip() && bgLayer->attachment()
== LocalBackgroundAttachment; |
535 bool isBorderFill = bgLayer->clip() == BorderFillBox; | 535 bool isBorderFill = bgLayer->clip() == BorderFillBox; |
536 bool isRoot = this->isRoot(); | 536 bool isRoot = this->isRoot(); |
537 | 537 |
538 Color bgColor = color; | 538 Color bgColor = color; |
539 StyleImage* bgImage = bgLayer->image(); | 539 StyleImage* bgImage = bgLayer->image(); |
540 bool shouldPaintBackgroundImage = bgImage && bgImage->canRender(this, style(
)->effectiveZoom()); | 540 bool shouldPaintBackgroundImage = bgImage && bgImage->canRender(this, style(
)->effectiveZoom()); |
541 | 541 |
542 bool forceBackgroundToWhite = false; | 542 bool forceBackgroundToWhite = false; |
543 if (document()->printing()) { | 543 if (document().printing()) { |
544 if (style()->printColorAdjust() == PrintColorAdjustEconomy) | 544 if (style()->printColorAdjust() == PrintColorAdjustEconomy) |
545 forceBackgroundToWhite = true; | 545 forceBackgroundToWhite = true; |
546 if (document()->settings() && document()->settings()->shouldPrintBackgro
unds()) | 546 if (document().settings() && document().settings()->shouldPrintBackgroun
ds()) |
547 forceBackgroundToWhite = false; | 547 forceBackgroundToWhite = false; |
548 } | 548 } |
549 | 549 |
550 // When printing backgrounds is disabled or using economy mode, | 550 // When printing backgrounds is disabled or using economy mode, |
551 // change existing background colors and images to a solid white background. | 551 // change existing background colors and images to a solid white background. |
552 // If there's no bg color or image, leave it untouched to avoid affecting tr
ansparency. | 552 // If there's no bg color or image, leave it untouched to avoid affecting tr
ansparency. |
553 // We don't try to avoid loading the background images, because this style f
lag is only set | 553 // We don't try to avoid loading the background images, because this style f
lag is only set |
554 // when printing, and at that point we've already loaded the background imag
es anyway. (To avoid | 554 // when printing, and at that point we've already loaded the background imag
es anyway. (To avoid |
555 // loading the background images we'd have to do this check when applying st
yles rather than | 555 // loading the background images we'd have to do this check when applying st
yles rather than |
556 // while rendering.) | 556 // while rendering.) |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 ASSERT_NOT_REACHED(); | 667 ASSERT_NOT_REACHED(); |
668 break; | 668 break; |
669 } | 669 } |
670 | 670 |
671 // Only fill with a base color (e.g., white) if we're the root document, sin
ce iframes/frames with | 671 // Only fill with a base color (e.g., white) if we're the root document, sin
ce iframes/frames with |
672 // no background in the child document should show the parent's background. | 672 // no background in the child document should show the parent's background. |
673 bool isOpaqueRoot = false; | 673 bool isOpaqueRoot = false; |
674 if (isRoot) { | 674 if (isRoot) { |
675 isOpaqueRoot = true; | 675 isOpaqueRoot = true; |
676 if (!bgLayer->next() && !(bgColor.alpha() == 255) && view()->frameView()
) { | 676 if (!bgLayer->next() && !(bgColor.alpha() == 255) && view()->frameView()
) { |
677 Element* ownerElement = document()->ownerElement(); | 677 Element* ownerElement = document().ownerElement(); |
678 if (ownerElement) { | 678 if (ownerElement) { |
679 if (!ownerElement->hasTagName(frameTag)) { | 679 if (!ownerElement->hasTagName(frameTag)) { |
680 // Locate the <body> element using the DOM. This is easier
than trying | 680 // Locate the <body> element using the DOM. This is easier
than trying |
681 // to crawl around a render tree with potential :before/:aft
er content and | 681 // to crawl around a render tree with potential :before/:aft
er content and |
682 // anonymous blocks created by inline <body> tags etc. We c
an locate the <body> | 682 // anonymous blocks created by inline <body> tags etc. We c
an locate the <body> |
683 // render object very easily via the DOM. | 683 // render object very easily via the DOM. |
684 HTMLElement* body = document()->body(); | 684 HTMLElement* body = document().body(); |
685 if (body) { | 685 if (body) { |
686 // Can't scroll a frameset document anyway. | 686 // Can't scroll a frameset document anyway. |
687 isOpaqueRoot = body->hasLocalName(framesetTag); | 687 isOpaqueRoot = body->hasLocalName(framesetTag); |
688 } else { | 688 } else { |
689 // SVG documents and XML documents with SVG root nodes a
re transparent. | 689 // SVG documents and XML documents with SVG root nodes a
re transparent. |
690 isOpaqueRoot = !document()->hasSVGRootNode(); | 690 isOpaqueRoot = !document().hasSVGRootNode(); |
691 } | 691 } |
692 } | 692 } |
693 } else | 693 } else |
694 isOpaqueRoot = !view()->frameView()->isTransparent(); | 694 isOpaqueRoot = !view()->frameView()->isTransparent(); |
695 } | 695 } |
696 view()->frameView()->setContentIsOpaque(isOpaqueRoot); | 696 view()->frameView()->setContentIsOpaque(isOpaqueRoot); |
697 } | 697 } |
698 | 698 |
699 // Paint the color first underneath all images, culled if background image o
ccludes it. | 699 // Paint the color first underneath all images, culled if background image o
ccludes it. |
700 // FIXME: In the bgLayer->hasFiniteBounds() case, we could improve the culli
ng test | 700 // FIXME: In the bgLayer->hasFiniteBounds() case, we could improve the culli
ng test |
(...skipping 2085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2786 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 2786 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); |
2787 for (RenderObject* child = startChild; child && child != endChild; ) { | 2787 for (RenderObject* child = startChild; child && child != endChild; ) { |
2788 // Save our next sibling as moveChildTo will clear it. | 2788 // Save our next sibling as moveChildTo will clear it. |
2789 RenderObject* nextSibling = child->nextSibling(); | 2789 RenderObject* nextSibling = child->nextSibling(); |
2790 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 2790 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); |
2791 child = nextSibling; | 2791 child = nextSibling; |
2792 } | 2792 } |
2793 } | 2793 } |
2794 | 2794 |
2795 } // namespace WebCore | 2795 } // namespace WebCore |
OLD | NEW |