| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the layout object implementation for KHTML. | 2 * This file is part of the layout 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 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 | 416 |
| 417 LayoutUnit remainingSpace; | 417 LayoutUnit remainingSpace; |
| 418 | 418 |
| 419 | 419 |
| 420 FlexBoxIterator iterator(this); | 420 FlexBoxIterator iterator(this); |
| 421 unsigned highestFlexGroup = 0; | 421 unsigned highestFlexGroup = 0; |
| 422 unsigned lowestFlexGroup = 0; | 422 unsigned lowestFlexGroup = 0; |
| 423 bool haveFlex = false, flexingChildren = false; | 423 bool haveFlex = false, flexingChildren = false; |
| 424 gatherFlexChildrenInfo(iterator, relayoutChildren, highestFlexGroup, lowestF
lexGroup, haveFlex); | 424 gatherFlexChildrenInfo(iterator, relayoutChildren, highestFlexGroup, lowestF
lexGroup, haveFlex); |
| 425 | 425 |
| 426 LayoutBlock::startDelayUpdateScrollInfo(); | 426 PaintLayerScrollableArea::DelayScrollPositionClampScope delayClampScope; |
| 427 | 427 |
| 428 // We do 2 passes. The first pass is simply to lay everyone out at | 428 // We do 2 passes. The first pass is simply to lay everyone out at |
| 429 // their preferred widths. The second pass handles flexing the children. | 429 // their preferred widths. The second pass handles flexing the children. |
| 430 do { | 430 do { |
| 431 // Reset our height. | 431 // Reset our height. |
| 432 setHeight(yPos); | 432 setHeight(yPos); |
| 433 | 433 |
| 434 xPos = borderLeft() + paddingLeft(); | 434 xPos = borderLeft() + paddingLeft(); |
| 435 | 435 |
| 436 // Our first pass is done without flexing. We simply lay the children | 436 // Our first pass is done without flexing. We simply lay the children |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 } | 639 } |
| 640 } while (absoluteValue(groupRemainingSpace) >= 1); | 640 } while (absoluteValue(groupRemainingSpace) >= 1); |
| 641 } | 641 } |
| 642 | 642 |
| 643 // We didn't find any children that could grow. | 643 // We didn't find any children that could grow. |
| 644 if (haveFlex && !flexingChildren) | 644 if (haveFlex && !flexingChildren) |
| 645 haveFlex = false; | 645 haveFlex = false; |
| 646 } | 646 } |
| 647 } while (haveFlex); | 647 } while (haveFlex); |
| 648 | 648 |
| 649 LayoutBlock::finishDelayUpdateScrollInfo(nullptr, nullptr); | |
| 650 | |
| 651 if (remainingSpace > 0 && ((style()->isLeftToRightDirection() && style()->bo
xPack() != BoxPackStart) | 649 if (remainingSpace > 0 && ((style()->isLeftToRightDirection() && style()->bo
xPack() != BoxPackStart) |
| 652 || (!style()->isLeftToRightDirection() && style()->boxPack() != BoxPackE
nd))) { | 650 || (!style()->isLeftToRightDirection() && style()->boxPack() != BoxPackE
nd))) { |
| 653 // Children must be repositioned. | 651 // Children must be repositioned. |
| 654 LayoutUnit offset; | 652 LayoutUnit offset; |
| 655 if (style()->boxPack() == BoxPackJustify) { | 653 if (style()->boxPack() == BoxPackJustify) { |
| 656 // Determine the total number of children. | 654 // Determine the total number of children. |
| 657 int totalChildren = 0; | 655 int totalChildren = 0; |
| 658 for (LayoutBox* child = iterator.first(); child; child = iterator.ne
xt()) { | 656 for (LayoutBox* child = iterator.first(); child; child = iterator.ne
xt()) { |
| 659 if (childDoesNotAffectWidthOrFlexing(child)) | 657 if (childDoesNotAffectWidthOrFlexing(child)) |
| 660 continue; | 658 continue; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 unsigned lowestFlexGroup = 0; | 714 unsigned lowestFlexGroup = 0; |
| 717 bool haveFlex = false, flexingChildren = false; | 715 bool haveFlex = false, flexingChildren = false; |
| 718 gatherFlexChildrenInfo(iterator, relayoutChildren, highestFlexGroup, lowestF
lexGroup, haveFlex); | 716 gatherFlexChildrenInfo(iterator, relayoutChildren, highestFlexGroup, lowestF
lexGroup, haveFlex); |
| 719 | 717 |
| 720 // We confine the line clamp ugliness to vertical flexible boxes (thus keepi
ng it out of | 718 // We confine the line clamp ugliness to vertical flexible boxes (thus keepi
ng it out of |
| 721 // mainstream block layout); this is not really part of the XUL box model. | 719 // mainstream block layout); this is not really part of the XUL box model. |
| 722 bool haveLineClamp = !style()->lineClamp().isNone(); | 720 bool haveLineClamp = !style()->lineClamp().isNone(); |
| 723 if (haveLineClamp) | 721 if (haveLineClamp) |
| 724 applyLineClamp(iterator, relayoutChildren); | 722 applyLineClamp(iterator, relayoutChildren); |
| 725 | 723 |
| 726 LayoutBlock::startDelayUpdateScrollInfo(); | 724 PaintLayerScrollableArea::DelayScrollPositionClampScope delayClampScope; |
| 727 | 725 |
| 728 // We do 2 passes. The first pass is simply to lay everyone out at | 726 // We do 2 passes. The first pass is simply to lay everyone out at |
| 729 // their preferred widths. The second pass handles flexing the children. | 727 // their preferred widths. The second pass handles flexing the children. |
| 730 // Our first pass is done without flexing. We simply lay the children | 728 // Our first pass is done without flexing. We simply lay the children |
| 731 // out within the box. | 729 // out within the box. |
| 732 do { | 730 do { |
| 733 setHeight(borderTop() + paddingTop()); | 731 setHeight(borderTop() + paddingTop()); |
| 734 LayoutUnit minHeight = size().height() + toAdd; | 732 LayoutUnit minHeight = size().height() + toAdd; |
| 735 | 733 |
| 736 for (LayoutBox* child = iterator.first(); child; child = iterator.next()
) { | 734 for (LayoutBox* child = iterator.first(); child; child = iterator.next()
) { |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 } | 888 } |
| 891 } while (absoluteValue(groupRemainingSpace) >= 1); | 889 } while (absoluteValue(groupRemainingSpace) >= 1); |
| 892 } | 890 } |
| 893 | 891 |
| 894 // We didn't find any children that could grow. | 892 // We didn't find any children that could grow. |
| 895 if (haveFlex && !flexingChildren) | 893 if (haveFlex && !flexingChildren) |
| 896 haveFlex = false; | 894 haveFlex = false; |
| 897 } | 895 } |
| 898 } while (haveFlex); | 896 } while (haveFlex); |
| 899 | 897 |
| 900 LayoutBlock::finishDelayUpdateScrollInfo(nullptr, nullptr); | |
| 901 | |
| 902 if (style()->boxPack() != BoxPackStart && remainingSpace > 0) { | 898 if (style()->boxPack() != BoxPackStart && remainingSpace > 0) { |
| 903 // Children must be repositioned. | 899 // Children must be repositioned. |
| 904 LayoutUnit offset; | 900 LayoutUnit offset; |
| 905 if (style()->boxPack() == BoxPackJustify) { | 901 if (style()->boxPack() == BoxPackJustify) { |
| 906 // Determine the total number of children. | 902 // Determine the total number of children. |
| 907 int totalChildren = 0; | 903 int totalChildren = 0; |
| 908 for (LayoutBox* child = iterator.first(); child; child = iterator.ne
xt()) { | 904 for (LayoutBox* child = iterator.first(); child; child = iterator.ne
xt()) { |
| 909 if (childDoesNotAffectWidthOrFlexing(child)) | 905 if (childDoesNotAffectWidthOrFlexing(child)) |
| 910 continue; | 906 continue; |
| 911 | 907 |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1112 if (minHeight.isFixed() || minHeight.isAuto()) { | 1108 if (minHeight.isFixed() || minHeight.isAuto()) { |
| 1113 LayoutUnit minHeight(child->style()->minHeight().value()); | 1109 LayoutUnit minHeight(child->style()->minHeight().value()); |
| 1114 LayoutUnit height = contentHeightForChild(child); | 1110 LayoutUnit height = contentHeightForChild(child); |
| 1115 LayoutUnit allowedShrinkage = (minHeight - height).clampPositiveToZero()
; | 1111 LayoutUnit allowedShrinkage = (minHeight - height).clampPositiveToZero()
; |
| 1116 return allowedShrinkage; | 1112 return allowedShrinkage; |
| 1117 } | 1113 } |
| 1118 return LayoutUnit(); | 1114 return LayoutUnit(); |
| 1119 } | 1115 } |
| 1120 | 1116 |
| 1121 } // namespace blink | 1117 } // namespace blink |
| OLD | NEW |