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 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 // information (which may trigger relayout). | 246 // information (which may trigger relayout). |
247 LayoutState state(*this); | 247 LayoutState state(*this); |
248 | 248 |
249 LayoutSize previous_size = Size(); | 249 LayoutSize previous_size = Size(); |
250 has_definite_logical_height_ = HasDefiniteLogicalHeight(); | 250 has_definite_logical_height_ = HasDefiniteLogicalHeight(); |
251 | 251 |
252 // Grid's layout logic controls the grid item's override size, hence | 252 // Grid's layout logic controls the grid item's override size, hence |
253 // we need to clear any override size set previously, so it doesn't | 253 // we need to clear any override size set previously, so it doesn't |
254 // interfere in current layout execution. | 254 // interfere in current layout execution. |
255 for (auto* child = FirstInFlowChildBox(); child; | 255 for (auto* child = FirstInFlowChildBox(); child; |
256 child = child->NextInFlowSiblingBox()) { | 256 child = child->NextInFlowSiblingBox()) |
257 child->ClearOverrideSize(); | 257 child->ClearOverrideSize(); |
258 if (!IsOrthogonalChild(*child) || | |
259 (!SizesLogicalWidthToFitContent(StyleRef().LogicalWidth()) && | |
260 !StyleRef().LogicalWidth().IsIntrinsicOrAuto())) | |
261 continue; | |
262 // Additionally, we may need to clear containingBlock override sizes and | |
263 // force a layout of the grid items to ensure we get the same result when | |
264 // grid's intrinsic size is computed again in the updateLogicalWidth call | |
265 // bellow. | |
266 child->ClearContainingBlockOverrideSize(); | |
267 child->ForceLayout(); | |
268 } | |
269 | 258 |
270 UpdateLogicalWidth(); | 259 UpdateLogicalWidth(); |
271 | 260 |
272 TextAutosizer::LayoutScope text_autosizer_layout_scope(this, &layout_scope); | 261 TextAutosizer::LayoutScope text_autosizer_layout_scope(this, &layout_scope); |
273 | 262 |
274 LayoutUnit available_space_for_columns = AvailableLogicalWidth(); | 263 LayoutUnit available_space_for_columns = AvailableLogicalWidth(); |
275 PlaceItemsOnGrid(grid_, available_space_for_columns); | 264 PlaceItemsOnGrid(grid_, available_space_for_columns); |
276 | 265 |
277 // 1- First, the track sizing algorithm is used to resolve the sizes of the | 266 // 1- First, the track sizing algorithm is used to resolve the sizes of the |
278 // grid columns. | 267 // grid columns. |
(...skipping 2125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2404 if (direction == kForRows) | 2393 if (direction == kForRows) |
2405 return grid.NumTracks(kForRows); | 2394 return grid.NumTracks(kForRows); |
2406 | 2395 |
2407 return grid.NumTracks(kForRows) | 2396 return grid.NumTracks(kForRows) |
2408 ? grid.NumTracks(kForColumns) | 2397 ? grid.NumTracks(kForColumns) |
2409 : GridPositionsResolver::ExplicitGridColumnCount( | 2398 : GridPositionsResolver::ExplicitGridColumnCount( |
2410 StyleRef(), grid.AutoRepeatTracks(kForColumns)); | 2399 StyleRef(), grid.AutoRepeatTracks(kForColumns)); |
2411 } | 2400 } |
2412 | 2401 |
2413 } // namespace blink | 2402 } // namespace blink |
OLD | NEW |