OLD | NEW |
1 /* | 1 /* |
2 * This file is part of the render object implementation for KHTML. | 2 * This file is part of the render object implementation for KHTML. |
3 * | 3 * |
4 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 4 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
5 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 5 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
6 * Copyright (C) 2003 Apple Computer, Inc. | 6 * Copyright (C) 2003 Apple Computer, Inc. |
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 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 maxDescent = std::max(maxDescent, descent); | 394 maxDescent = std::max(maxDescent, descent); |
395 | 395 |
396 // Now update our height. | 396 // Now update our height. |
397 setHeight(std::max(yPos + maxAscent + maxDescent, height())); | 397 setHeight(std::max(yPos + maxAscent + maxDescent, height())); |
398 } else { | 398 } else { |
399 setHeight(std::max(height(), yPos + child->height() + child->mar
ginHeight())); | 399 setHeight(std::max(height(), yPos + child->height() + child->mar
ginHeight())); |
400 } | 400 } |
401 } | 401 } |
402 | 402 |
403 if (!iterator.first() && hasLineIfEmpty()) | 403 if (!iterator.first() && hasLineIfEmpty()) |
404 setHeight(height() + lineHeight(true, style()->isHorizontalWritingMo
de() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); | 404 setHeight(height() + lineHeight(FirstLineStyle, style()->isHorizonta
lWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); |
405 | 405 |
406 setHeight(height() + toAdd); | 406 setHeight(height() + toAdd); |
407 | 407 |
408 oldHeight = height(); | 408 oldHeight = height(); |
409 updateLogicalHeight(); | 409 updateLogicalHeight(); |
410 | 410 |
411 relayoutChildren = false; | 411 relayoutChildren = false; |
412 if (oldHeight != height()) | 412 if (oldHeight != height()) |
413 heightSpecified = true; | 413 heightSpecified = true; |
414 | 414 |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 } | 710 } |
711 | 711 |
712 // Place the child. | 712 // Place the child. |
713 placeChild(child, LayoutPoint(childX, height())); | 713 placeChild(child, LayoutPoint(childX, height())); |
714 setHeight(height() + child->height() + child->marginBottom()); | 714 setHeight(height() + child->height() + child->marginBottom()); |
715 } | 715 } |
716 | 716 |
717 yPos = height(); | 717 yPos = height(); |
718 | 718 |
719 if (!iterator.first() && hasLineIfEmpty()) | 719 if (!iterator.first() && hasLineIfEmpty()) |
720 setHeight(height() + lineHeight(true, style()->isHorizontalWritingMo
de() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); | 720 setHeight(height() + lineHeight(FirstLineStyle, style()->isHorizonta
lWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); |
721 | 721 |
722 setHeight(height() + toAdd); | 722 setHeight(height() + toAdd); |
723 | 723 |
724 // Negative margins can cause our height to shrink below our minimal hei
ght (border/padding). | 724 // Negative margins can cause our height to shrink below our minimal hei
ght (border/padding). |
725 // If this happens, ensure that the computed height is increased to the
minimal height. | 725 // If this happens, ensure that the computed height is increased to the
minimal height. |
726 if (height() < minHeight) | 726 if (height() < minHeight) |
727 setHeight(minHeight); | 727 setHeight(minHeight); |
728 | 728 |
729 // Now we have to calc our height, so we know how much space we have rem
aining. | 729 // Now we have to calc our height, so we know how much space we have rem
aining. |
730 oldHeight = height(); | 730 oldHeight = height(); |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 if (!lastLine) | 927 if (!lastLine) |
928 continue; | 928 continue; |
929 | 929 |
930 RootInlineBox* lastVisibleLine = blockChild->lineAtIndex(numVisibleLines
- 1); | 930 RootInlineBox* lastVisibleLine = blockChild->lineAtIndex(numVisibleLines
- 1); |
931 if (!lastVisibleLine) | 931 if (!lastVisibleLine) |
932 continue; | 932 continue; |
933 | 933 |
934 const UChar ellipsisAndSpace[2] = { horizontalEllipsis, ' ' }; | 934 const UChar ellipsisAndSpace[2] = { horizontalEllipsis, ' ' }; |
935 DEFINE_STATIC_LOCAL(AtomicString, ellipsisAndSpaceStr, (ellipsisAndSpace
, 2)); | 935 DEFINE_STATIC_LOCAL(AtomicString, ellipsisAndSpaceStr, (ellipsisAndSpace
, 2)); |
936 DEFINE_STATIC_LOCAL(AtomicString, ellipsisStr, (&horizontalEllipsis, 1))
; | 936 DEFINE_STATIC_LOCAL(AtomicString, ellipsisStr, (&horizontalEllipsis, 1))
; |
937 const Font& font = style(numVisibleLines == 1)->font(); | 937 const Font& font = style(numVisibleLines == 1 ? FirstLineStyle : OwnStyl
e)->font(); |
938 | 938 |
939 // Get ellipsis width, and if the last child is an anchor, it will go af
ter the ellipsis, so add in a space and the anchor width too | 939 // Get ellipsis width, and if the last child is an anchor, it will go af
ter the ellipsis, so add in a space and the anchor width too |
940 float totalWidth; | 940 float totalWidth; |
941 InlineBox* anchorBox = lastLine->lastChild(); | 941 InlineBox* anchorBox = lastLine->lastChild(); |
942 if (anchorBox && anchorBox->renderer().style()->isLink()) | 942 if (anchorBox && anchorBox->renderer().style()->isLink()) |
943 totalWidth = anchorBox->logicalWidth() + font.width(RenderBlockFlow:
:constructTextRun(this, font, ellipsisAndSpace, 2, style(), style()->direction()
)); | 943 totalWidth = anchorBox->logicalWidth() + font.width(RenderBlockFlow:
:constructTextRun(this, font, ellipsisAndSpace, 2, style(), style()->direction()
)); |
944 else { | 944 else { |
945 anchorBox = 0; | 945 anchorBox = 0; |
946 totalWidth = font.width(RenderBlockFlow::constructTextRun(this, font
, &horizontalEllipsis, 1, style(), style()->direction())); | 946 totalWidth = font.width(RenderBlockFlow::constructTextRun(this, font
, &horizontalEllipsis, 1, style(), style()->direction())); |
947 } | 947 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1068 if (isPseudoElement()) | 1068 if (isPseudoElement()) |
1069 return "RenderDeprecatedFlexibleBox (generated)"; | 1069 return "RenderDeprecatedFlexibleBox (generated)"; |
1070 if (isAnonymous()) | 1070 if (isAnonymous()) |
1071 return "RenderDeprecatedFlexibleBox (generated)"; | 1071 return "RenderDeprecatedFlexibleBox (generated)"; |
1072 if (isRelPositioned()) | 1072 if (isRelPositioned()) |
1073 return "RenderDeprecatedFlexibleBox (relative positioned)"; | 1073 return "RenderDeprecatedFlexibleBox (relative positioned)"; |
1074 return "RenderDeprecatedFlexibleBox"; | 1074 return "RenderDeprecatedFlexibleBox"; |
1075 } | 1075 } |
1076 | 1076 |
1077 } // namespace WebCore | 1077 } // namespace WebCore |
OLD | NEW |