| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 | 436 |
| 437 // 3. Grow all Grid tracks in GridTracks from their baseSize up to their gro
wthLimit value until freeSpace is exhausted. | 437 // 3. Grow all Grid tracks in GridTracks from their baseSize up to their gro
wthLimit value until freeSpace is exhausted. |
| 438 const size_t tracksSize = tracks.size(); | 438 const size_t tracksSize = tracks.size(); |
| 439 if (!hasUndefinedRemainingSpace) { | 439 if (!hasUndefinedRemainingSpace) { |
| 440 Vector<GridTrack*> tracksForDistribution(tracksSize); | 440 Vector<GridTrack*> tracksForDistribution(tracksSize); |
| 441 for (size_t i = 0; i < tracksSize; ++i) { | 441 for (size_t i = 0; i < tracksSize; ++i) { |
| 442 tracksForDistribution[i] = tracks.data() + i; | 442 tracksForDistribution[i] = tracks.data() + i; |
| 443 tracksForDistribution[i]->m_plannedIncrease = 0; | 443 tracksForDistribution[i]->m_plannedIncrease = 0; |
| 444 } | 444 } |
| 445 | 445 |
| 446 distributeSpaceToTracks(tracksForDistribution, nullptr, &GridTrack::base
Size, sizingData, freeSpace); | 446 distributeSpaceToTracks<MaximizeTracks>(tracksForDistribution, nullptr,
sizingData, freeSpace); |
| 447 | 447 |
| 448 for (auto* track : tracksForDistribution) | 448 for (auto* track : tracksForDistribution) |
| 449 track->growBaseSize(track->m_plannedIncrease); | 449 track->growBaseSize(track->m_plannedIncrease); |
| 450 } else { | 450 } else { |
| 451 for (auto& track : tracks) | 451 for (auto& track : tracks) |
| 452 track.setBaseSize(track.growthLimit()); | 452 track.setBaseSize(track.growthLimit()); |
| 453 } | 453 } |
| 454 | 454 |
| 455 if (flexibleSizedTracksIndex.isEmpty()) | 455 if (flexibleSizedTracksIndex.isEmpty()) |
| 456 return; | 456 return; |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 } | 736 } |
| 737 } | 737 } |
| 738 } | 738 } |
| 739 } | 739 } |
| 740 std::sort(sizingData.itemsSortedByIncreasingSpan.begin(), sizingData.itemsSo
rtedByIncreasingSpan.end()); | 740 std::sort(sizingData.itemsSortedByIncreasingSpan.begin(), sizingData.itemsSo
rtedByIncreasingSpan.end()); |
| 741 | 741 |
| 742 auto it = sizingData.itemsSortedByIncreasingSpan.begin(); | 742 auto it = sizingData.itemsSortedByIncreasingSpan.begin(); |
| 743 auto end = sizingData.itemsSortedByIncreasingSpan.end(); | 743 auto end = sizingData.itemsSortedByIncreasingSpan.end(); |
| 744 while (it != end) { | 744 while (it != end) { |
| 745 GridItemsSpanGroupRange spanGroupRange = { it, std::upper_bound(it, end,
*it) }; | 745 GridItemsSpanGroupRange spanGroupRange = { it, std::upper_bound(it, end,
*it) }; |
| 746 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s
panGroupRange, &GridTrackSize::hasMinOrMaxContentMinTrackBreadth, &LayoutGrid::m
inContentForChild, &GridTrack::baseSize, &GridTrack::growBaseSize, &GridTrackSiz
e::hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth); | 746 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMinimums
>(direction, sizingData, spanGroupRange); |
| 747 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s
panGroupRange, &GridTrackSize::hasMaxContentMinTrackBreadth, &LayoutGrid::maxCon
tentForChild, &GridTrack::baseSize, &GridTrack::growBaseSize, &GridTrackSize::ha
sMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth); | 747 resolveContentBasedTrackSizingFunctionsForItems<ResolveMaxContentMinimum
s>(direction, sizingData, spanGroupRange); |
| 748 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s
panGroupRange, &GridTrackSize::hasMinOrMaxContentMaxTrackBreadth, &LayoutGrid::m
inContentForChild, &GridTrack::growthLimitIfNotInfinite, &GridTrack::growGrowthL
imit); | 748 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMaximums
>(direction, sizingData, spanGroupRange); |
| 749 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s
panGroupRange, &GridTrackSize::hasMaxContentMaxTrackBreadth, &LayoutGrid::maxCon
tentForChild, &GridTrack::growthLimitIfNotInfinite, &GridTrack::growGrowthLimit)
; | 749 resolveContentBasedTrackSizingFunctionsForItems<ResolveMaxContentMaximum
s>(direction, sizingData, spanGroupRange); |
| 750 it = spanGroupRange.rangeEnd; | 750 it = spanGroupRange.rangeEnd; |
| 751 } | 751 } |
| 752 | 752 |
| 753 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { | 753 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { |
| 754 GridTrack& track = (direction == ForColumns) ? sizingData.columnTracks[t
rackIndex] : sizingData.rowTracks[trackIndex]; | 754 GridTrack& track = (direction == ForColumns) ? sizingData.columnTracks[t
rackIndex] : sizingData.rowTracks[trackIndex]; |
| 755 if (track.growthLimitIsInfinite()) | 755 if (track.growthLimitIsInfinite()) |
| 756 track.setGrowthLimit(track.baseSize()); | 756 track.setGrowthLimit(track.baseSize()); |
| 757 } | 757 } |
| 758 } | 758 } |
| 759 | 759 |
| 760 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems(Grid
TrackSizingDirection direction, const GridCoordinate& coordinate, LayoutBox& gri
dItem, GridTrack& track, Vector<GridTrack>& columnTracks) | 760 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems(Grid
TrackSizingDirection direction, const GridCoordinate& coordinate, LayoutBox& gri
dItem, GridTrack& track, Vector<GridTrack>& columnTracks) |
| 761 { | 761 { |
| 762 const GridResolvedPosition trackPosition = (direction == ForColumns) ? coord
inate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPosition; | 762 const GridResolvedPosition trackPosition = (direction == ForColumns) ? coord
inate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPosition; |
| 763 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toInt()); | 763 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toInt()); |
| 764 | 764 |
| 765 if (trackSize.hasMinContentMinTrackBreadth()) | 765 if (trackSize.hasMinContentMinTrackBreadth()) |
| 766 track.setBaseSize(std::max(track.baseSize(), minContentForChild(gridItem
, direction, columnTracks))); | 766 track.setBaseSize(std::max(track.baseSize(), minContentForChild(gridItem
, direction, columnTracks))); |
| 767 else if (trackSize.hasMaxContentMinTrackBreadth()) | 767 else if (trackSize.hasMaxContentMinTrackBreadth()) |
| 768 track.setBaseSize(std::max(track.baseSize(), maxContentForChild(gridItem
, direction, columnTracks))); | 768 track.setBaseSize(std::max(track.baseSize(), maxContentForChild(gridItem
, direction, columnTracks))); |
| 769 | 769 |
| 770 if (trackSize.hasMinContentMaxTrackBreadth()) | 770 if (trackSize.hasMinContentMaxTrackBreadth()) |
| 771 track.setGrowthLimit(std::max(track.growthLimit(), minContentForChild(gr
idItem, direction, columnTracks))); | 771 track.setGrowthLimit(std::max(track.growthLimit(), minContentForChild(gr
idItem, direction, columnTracks))); |
| 772 else if (trackSize.hasMaxContentMaxTrackBreadth()) | 772 else if (trackSize.hasMaxContentMaxTrackBreadth()) |
| 773 track.setGrowthLimit(std::max(track.growthLimit(), maxContentForChild(gr
idItem, direction, columnTracks))); | 773 track.setGrowthLimit(std::max(track.growthLimit(), maxContentForChild(gr
idItem, direction, columnTracks))); |
| 774 } | 774 } |
| 775 | 775 |
| 776 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizing
Direction direction, GridSizingData& sizingData, const GridItemsSpanGroupRange&
gridItemsWithSpan, FilterFunction filterFunction, SizingFunction sizingFunction,
AccumulatorGetter trackGetter, AccumulatorGrowFunction trackGrowthFunction, Fil
terFunction growAboveMaxBreadthFilterFunction) | 776 const LayoutUnit& LayoutGrid::trackSizeForTrackSizeComputationPhase(TrackSizeCom
putationPhase phase, GridTrack& track, TrackSizeRestriction restriction) |
| 777 { |
| 778 switch (phase) { |
| 779 case ResolveIntrinsicMinimums: |
| 780 case ResolveMaxContentMinimums: |
| 781 case MaximizeTracks: |
| 782 return track.baseSize(); |
| 783 break; |
| 784 case ResolveIntrinsicMaximums: |
| 785 case ResolveMaxContentMaximums: |
| 786 return restriction == AllowInfinity ? track.growthLimit() : track.growth
LimitIfNotInfinite(); |
| 787 break; |
| 788 } |
| 789 |
| 790 ASSERT_NOT_REACHED(); |
| 791 return track.baseSize(); |
| 792 } |
| 793 |
| 794 bool LayoutGrid::shouldProcessTrackForTrackSizeComputationPhase(TrackSizeComputa
tionPhase phase, const GridTrackSize& trackSize) |
| 795 { |
| 796 switch (phase) { |
| 797 case ResolveIntrinsicMinimums: |
| 798 return trackSize.hasMinOrMaxContentMinTrackBreadth(); |
| 799 case ResolveMaxContentMinimums: |
| 800 return trackSize.hasMaxContentMinTrackBreadth(); |
| 801 case ResolveIntrinsicMaximums: |
| 802 return trackSize.hasMinOrMaxContentMaxTrackBreadth(); |
| 803 case ResolveMaxContentMaximums: |
| 804 return trackSize.hasMaxContentMaxTrackBreadth(); |
| 805 case MaximizeTracks: |
| 806 ASSERT_NOT_REACHED(); |
| 807 return false; |
| 808 } |
| 809 |
| 810 ASSERT_NOT_REACHED(); |
| 811 return false; |
| 812 } |
| 813 |
| 814 bool LayoutGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase(T
rackSizeComputationPhase phase, const GridTrackSize& trackSize) |
| 815 { |
| 816 switch (phase) { |
| 817 case ResolveIntrinsicMinimums: |
| 818 return trackSize.hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackB
readth(); |
| 819 case ResolveMaxContentMinimums: |
| 820 return trackSize.hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadt
h(); |
| 821 case ResolveIntrinsicMaximums: |
| 822 case ResolveMaxContentMaximums: |
| 823 return true; |
| 824 case MaximizeTracks: |
| 825 ASSERT_NOT_REACHED(); |
| 826 return false; |
| 827 } |
| 828 |
| 829 ASSERT_NOT_REACHED(); |
| 830 return false; |
| 831 } |
| 832 |
| 833 void LayoutGrid::updateTrackSizeForTrackSizeComputationPhase(TrackSizeComputatio
nPhase phase, GridTrack& track) |
| 834 { |
| 835 switch (phase) { |
| 836 case ResolveIntrinsicMinimums: |
| 837 case ResolveMaxContentMinimums: |
| 838 track.growBaseSize(track.m_plannedIncrease); |
| 839 return; |
| 840 case ResolveIntrinsicMaximums: |
| 841 case ResolveMaxContentMaximums: |
| 842 track.growGrowthLimit(track.m_plannedIncrease); |
| 843 return; |
| 844 case MaximizeTracks: |
| 845 ASSERT_NOT_REACHED(); |
| 846 return; |
| 847 } |
| 848 |
| 849 ASSERT_NOT_REACHED(); |
| 850 } |
| 851 |
| 852 LayoutUnit LayoutGrid::currentItemSizeForTrackSizeComputationPhase(TrackSizeComp
utationPhase phase, LayoutBox& gridItem, GridTrackSizingDirection direction, Vec
tor<GridTrack>& columnTracks) |
| 853 { |
| 854 switch (phase) { |
| 855 case ResolveIntrinsicMinimums: |
| 856 case ResolveIntrinsicMaximums: |
| 857 return minContentForChild(gridItem, direction, columnTracks); |
| 858 case ResolveMaxContentMinimums: |
| 859 case ResolveMaxContentMaximums: |
| 860 return maxContentForChild(gridItem, direction, columnTracks); |
| 861 case MaximizeTracks: |
| 862 ASSERT_NOT_REACHED(); |
| 863 return 0; |
| 864 } |
| 865 |
| 866 ASSERT_NOT_REACHED(); |
| 867 return 0; |
| 868 } |
| 869 |
| 870 template <LayoutGrid::TrackSizeComputationPhase phase> |
| 871 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizing
Direction direction, GridSizingData& sizingData, const GridItemsSpanGroupRange&
gridItemsWithSpan) |
| 777 { | 872 { |
| 778 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra
cks : sizingData.rowTracks; | 873 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra
cks : sizingData.rowTracks; |
| 779 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) | 874 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) |
| 780 tracks[trackIndex].m_plannedIncrease = 0; | 875 tracks[trackIndex].m_plannedIncrease = 0; |
| 781 | 876 |
| 782 for (auto it = gridItemsWithSpan.rangeStart; it != gridItemsWithSpan.rangeEn
d; ++it) { | 877 for (auto it = gridItemsWithSpan.rangeStart; it != gridItemsWithSpan.rangeEn
d; ++it) { |
| 783 GridItemWithSpan& gridItemWithSpan = *it; | 878 GridItemWithSpan& gridItemWithSpan = *it; |
| 784 ASSERT(gridItemWithSpan.span() > 1); | 879 ASSERT(gridItemWithSpan.span() > 1); |
| 785 const GridCoordinate coordinate = gridItemWithSpan.coordinate(); | 880 const GridCoordinate coordinate = gridItemWithSpan.coordinate(); |
| 786 const GridSpan& itemSpan = (direction == ForColumns) ? coordinate.column
s : coordinate.rows; | 881 const GridSpan& itemSpan = (direction == ForColumns) ? coordinate.column
s : coordinate.rows; |
| 787 | 882 |
| 788 sizingData.growBeyondGrowthLimitsTracks.shrink(0); | 883 sizingData.growBeyondGrowthLimitsTracks.shrink(0); |
| 789 sizingData.filteredTracks.shrink(0); | 884 sizingData.filteredTracks.shrink(0); |
| 790 LayoutUnit spanningTracksSize; | 885 LayoutUnit spanningTracksSize; |
| 791 for (const auto& trackPosition : itemSpan) { | 886 for (const auto& trackPosition : itemSpan) { |
| 792 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toI
nt()); | 887 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toI
nt()); |
| 793 GridTrack& track = (direction == ForColumns) ? sizingData.columnTrac
ks[trackPosition.toInt()] : sizingData.rowTracks[trackPosition.toInt()]; | 888 GridTrack& track = (direction == ForColumns) ? sizingData.columnTrac
ks[trackPosition.toInt()] : sizingData.rowTracks[trackPosition.toInt()]; |
| 794 spanningTracksSize += (track.*trackGetter)(); | 889 spanningTracksSize += trackSizeForTrackSizeComputationPhase(phase, t
rack, ForbidInfinity); |
| 795 if (!(trackSize.*filterFunction)()) | 890 if (!shouldProcessTrackForTrackSizeComputationPhase(phase, trackSize
)) |
| 796 continue; | 891 continue; |
| 797 | 892 |
| 798 sizingData.filteredTracks.append(&track); | 893 sizingData.filteredTracks.append(&track); |
| 799 | 894 |
| 800 if (!growAboveMaxBreadthFilterFunction || (trackSize.*growAboveMaxBr
eadthFilterFunction)()) | 895 if (trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase(ph
ase, trackSize)) |
| 801 sizingData.growBeyondGrowthLimitsTracks.append(&track); | 896 sizingData.growBeyondGrowthLimitsTracks.append(&track); |
| 802 } | 897 } |
| 803 | 898 |
| 804 if (sizingData.filteredTracks.isEmpty()) | 899 if (sizingData.filteredTracks.isEmpty()) |
| 805 continue; | 900 continue; |
| 806 | 901 |
| 807 // Specs mandate to floor extraSpace to 0. Instead we directly avoid the
function call in those cases as it will be | 902 // Specs mandate to floor extraSpace to 0. Instead we directly avoid the
function call in those cases as it will be |
| 808 // a noop in terms of track sizing. | 903 // a noop in terms of track sizing. |
| 809 LayoutUnit extraSpace = (this->*sizingFunction)(gridItemWithSpan.gridIte
m(), direction, sizingData.columnTracks) - spanningTracksSize; | 904 LayoutUnit extraSpace = currentItemSizeForTrackSizeComputationPhase(phas
e, gridItemWithSpan.gridItem(), direction, sizingData.columnTracks) - spanningTr
acksSize; |
| 810 if (extraSpace > 0) { | 905 if (extraSpace > 0) { |
| 811 Vector<GridTrack*>* tracksToGrowBeyondGrowthLimits = sizingData.grow
BeyondGrowthLimitsTracks.isEmpty() ? &sizingData.filteredTracks : &sizingData.gr
owBeyondGrowthLimitsTracks; | 906 Vector<GridTrack*>* tracksToGrowBeyondGrowthLimits = sizingData.grow
BeyondGrowthLimitsTracks.isEmpty() ? &sizingData.filteredTracks : &sizingData.gr
owBeyondGrowthLimitsTracks; |
| 812 distributeSpaceToTracks(sizingData.filteredTracks, tracksToGrowBeyon
dGrowthLimits, trackGetter, sizingData, extraSpace); | 907 distributeSpaceToTracks<phase>(sizingData.filteredTracks, tracksToGr
owBeyondGrowthLimits, sizingData, extraSpace); |
| 813 } | 908 } |
| 814 } | 909 } |
| 815 | 910 |
| 816 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { | 911 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { |
| 817 GridTrack& track = tracks[trackIndex]; | 912 GridTrack& track = tracks[trackIndex]; |
| 818 if (track.m_plannedIncrease) | 913 if (track.m_plannedIncrease) |
| 819 (track.*trackGrowthFunction)(track.m_plannedIncrease); | 914 updateTrackSizeForTrackSizeComputationPhase(phase, track); |
| 820 } | 915 } |
| 821 } | 916 } |
| 822 | 917 |
| 823 static bool sortByGridTrackGrowthPotential(const GridTrack* track1, const GridTr
ack* track2) | 918 static bool sortByGridTrackGrowthPotential(const GridTrack* track1, const GridTr
ack* track2) |
| 824 { | 919 { |
| 825 // This check ensures that we respect the irreflexivity property of the stri
ct weak ordering required by std::sort | 920 // This check ensures that we respect the irreflexivity property of the stri
ct weak ordering required by std::sort |
| 826 // (forall x: NOT x < x). | 921 // (forall x: NOT x < x). |
| 827 if (track1->growthLimitIsInfinite() && track2->growthLimitIsInfinite()) | 922 if (track1->growthLimitIsInfinite() && track2->growthLimitIsInfinite()) |
| 828 return false; | 923 return false; |
| 829 | 924 |
| 830 if (track1->growthLimitIsInfinite() || track2->growthLimitIsInfinite()) | 925 if (track1->growthLimitIsInfinite() || track2->growthLimitIsInfinite()) |
| 831 return track2->growthLimitIsInfinite(); | 926 return track2->growthLimitIsInfinite(); |
| 832 | 927 |
| 833 return (track1->growthLimit() - track1->baseSize()) < (track2->growthLimit()
- track2->baseSize()); | 928 return (track1->growthLimit() - track1->baseSize()) < (track2->growthLimit()
- track2->baseSize()); |
| 834 } | 929 } |
| 835 | 930 |
| 836 void LayoutGrid::distributeSpaceToTracks(Vector<GridTrack*>& tracks, const Vecto
r<GridTrack*>* growBeyondGrowthLimitsTracks, AccumulatorGetter trackGetter, Grid
SizingData& sizingData, LayoutUnit& availableLogicalSpace) | 931 template <LayoutGrid::TrackSizeComputationPhase phase> |
| 932 void LayoutGrid::distributeSpaceToTracks(Vector<GridTrack*>& tracks, const Vecto
r<GridTrack*>* growBeyondGrowthLimitsTracks, GridSizingData& sizingData, LayoutU
nit& availableLogicalSpace) |
| 837 { | 933 { |
| 838 ASSERT(availableLogicalSpace > 0); | 934 ASSERT(availableLogicalSpace > 0); |
| 839 std::sort(tracks.begin(), tracks.end(), sortByGridTrackGrowthPotential); | 935 std::sort(tracks.begin(), tracks.end(), sortByGridTrackGrowthPotential); |
| 840 | 936 |
| 841 size_t tracksSize = tracks.size(); | 937 size_t tracksSize = tracks.size(); |
| 842 for (size_t i = 0; i < tracksSize; ++i) { | 938 for (size_t i = 0; i < tracksSize; ++i) { |
| 843 GridTrack& track = *tracks[i]; | 939 GridTrack& track = *tracks[i]; |
| 844 LayoutUnit availableLogicalSpaceShare = availableLogicalSpace / (tracksS
ize - i); | 940 LayoutUnit availableLogicalSpaceShare = availableLogicalSpace / (tracksS
ize - i); |
| 845 const LayoutUnit& trackBreadth = (track.*trackGetter)(); | 941 const LayoutUnit& trackBreadth = trackSizeForTrackSizeComputationPhase(p
hase, track, ForbidInfinity); |
| 846 LayoutUnit growthShare = track.growthLimitIsInfinite() ? availableLogica
lSpaceShare : std::min(availableLogicalSpaceShare, track.growthLimit() - trackBr
eadth); | 942 LayoutUnit growthShare = track.growthLimitIsInfinite() ? availableLogica
lSpaceShare : std::min(availableLogicalSpaceShare, track.growthLimit() - trackBr
eadth); |
| 847 ASSERT_WITH_MESSAGE(growthShare >= 0, "We must never shrink any grid tra
ck or else we can't guarantee we abide by our min-sizing function."); | 943 ASSERT_WITH_MESSAGE(growthShare >= 0, "We must never shrink any grid tra
ck or else we can't guarantee we abide by our min-sizing function."); |
| 848 track.m_increaseDuringDistribution = growthShare; | 944 track.m_increaseDuringDistribution = growthShare; |
| 849 availableLogicalSpace -= growthShare; | 945 availableLogicalSpace -= growthShare; |
| 850 } | 946 } |
| 851 | 947 |
| 852 if (availableLogicalSpace > 0 && growBeyondGrowthLimitsTracks) { | 948 if (availableLogicalSpace > 0 && growBeyondGrowthLimitsTracks) { |
| 853 size_t tracksGrowingAboveMaxBreadthSize = growBeyondGrowthLimitsTracks->
size(); | 949 size_t tracksGrowingAboveMaxBreadthSize = growBeyondGrowthLimitsTracks->
size(); |
| 854 for (size_t i = 0; i < tracksGrowingAboveMaxBreadthSize; ++i) { | 950 for (size_t i = 0; i < tracksGrowingAboveMaxBreadthSize; ++i) { |
| 855 GridTrack* track = growBeyondGrowthLimitsTracks->at(i); | 951 GridTrack* track = growBeyondGrowthLimitsTracks->at(i); |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1767 if (isFloating()) | 1863 if (isFloating()) |
| 1768 return "LayoutGrid (floating)"; | 1864 return "LayoutGrid (floating)"; |
| 1769 if (isAnonymous()) | 1865 if (isAnonymous()) |
| 1770 return "LayoutGrid (anonymous)"; | 1866 return "LayoutGrid (anonymous)"; |
| 1771 if (isRelPositioned()) | 1867 if (isRelPositioned()) |
| 1772 return "LayoutGrid (relative positioned)"; | 1868 return "LayoutGrid (relative positioned)"; |
| 1773 return "LayoutGrid"; | 1869 return "LayoutGrid"; |
| 1774 } | 1870 } |
| 1775 | 1871 |
| 1776 } // namespace blink | 1872 } // namespace blink |
| OLD | NEW |