Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutGrid.cpp

Issue 2438253003: [css-grid] Use order-modified document order for m_gridItemsIndexesMap (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/GridPainter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1904 matching lines...) Expand 10 before | Expand all | Expand 10 after
1915 } 1915 }
1916 } 1916 }
1917 return emptyTrackIndexes; 1917 return emptyTrackIndexes;
1918 } 1918 }
1919 1919
1920 void LayoutGrid::placeItemsOnGrid() { 1920 void LayoutGrid::placeItemsOnGrid() {
1921 if (!m_gridIsDirty) 1921 if (!m_gridIsDirty)
1922 return; 1922 return;
1923 1923
1924 DCHECK(m_gridItemArea.isEmpty()); 1924 DCHECK(m_gridItemArea.isEmpty());
1925 DCHECK(m_gridItemsIndexesMap.isEmpty());
1926 1925
1927 populateExplicitGridAndOrderIterator(); 1926 populateExplicitGridAndOrderIterator();
1928 1927
1929 // We clear the dirty bit here as the grid sizes have been updated. 1928 // We clear the dirty bit here as the grid sizes have been updated.
1930 m_gridIsDirty = false; 1929 m_gridIsDirty = false;
1931 1930
1932 Vector<LayoutBox*> autoMajorAxisAutoGridItems; 1931 Vector<LayoutBox*> autoMajorAxisAutoGridItems;
1933 Vector<LayoutBox*> specifiedMajorAxisAutoGridItems; 1932 Vector<LayoutBox*> specifiedMajorAxisAutoGridItems;
1933 DCHECK(m_gridItemsIndexesMap.isEmpty());
1934 size_t childIndex = 0;
1934 m_hasAnyOrthogonalChildren = false; 1935 m_hasAnyOrthogonalChildren = false;
1935 for (LayoutBox* child = m_orderIterator.first(); child; 1936 for (LayoutBox* child = m_orderIterator.first(); child;
1936 child = m_orderIterator.next()) { 1937 child = m_orderIterator.next()) {
1937 if (child->isOutOfFlowPositioned()) 1938 if (child->isOutOfFlowPositioned())
1938 continue; 1939 continue;
1939 1940
1941 m_gridItemsIndexesMap.set(child, childIndex++);
1942
1940 m_hasAnyOrthogonalChildren = 1943 m_hasAnyOrthogonalChildren =
1941 m_hasAnyOrthogonalChildren || isOrthogonalChild(*child); 1944 m_hasAnyOrthogonalChildren || isOrthogonalChild(*child);
1942 1945
1943 GridArea area = cachedGridArea(*child); 1946 GridArea area = cachedGridArea(*child);
1944 if (!area.rows.isIndefinite()) 1947 if (!area.rows.isIndefinite())
1945 area.rows.translate(abs(m_smallestRowStart)); 1948 area.rows.translate(abs(m_smallestRowStart));
1946 if (!area.columns.isIndefinite()) 1949 if (!area.columns.isIndefinite())
1947 area.columns.translate(abs(m_smallestColumnStart)); 1950 area.columns.translate(abs(m_smallestColumnStart));
1948 m_gridItemArea.set(child, area); 1951 m_gridItemArea.set(child, area);
1949 1952
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1990 void LayoutGrid::populateExplicitGridAndOrderIterator() { 1993 void LayoutGrid::populateExplicitGridAndOrderIterator() {
1991 OrderIteratorPopulator populator(m_orderIterator); 1994 OrderIteratorPopulator populator(m_orderIterator);
1992 1995
1993 m_smallestRowStart = m_smallestColumnStart = 0; 1996 m_smallestRowStart = m_smallestColumnStart = 0;
1994 1997
1995 size_t maximumRowIndex = 1998 size_t maximumRowIndex =
1996 GridPositionsResolver::explicitGridRowCount(*style(), m_autoRepeatRows); 1999 GridPositionsResolver::explicitGridRowCount(*style(), m_autoRepeatRows);
1997 size_t maximumColumnIndex = GridPositionsResolver::explicitGridColumnCount( 2000 size_t maximumColumnIndex = GridPositionsResolver::explicitGridColumnCount(
1998 *style(), m_autoRepeatColumns); 2001 *style(), m_autoRepeatColumns);
1999 2002
2000 ASSERT(m_gridItemsIndexesMap.isEmpty());
2001 size_t childIndex = 0;
2002 for (LayoutBox* child = firstInFlowChildBox(); child; 2003 for (LayoutBox* child = firstInFlowChildBox(); child;
2003 child = child->nextInFlowSiblingBox()) { 2004 child = child->nextInFlowSiblingBox()) {
2004 populator.collectChild(child); 2005 populator.collectChild(child);
2005 m_gridItemsIndexesMap.set(child, childIndex++);
2006 2006
2007 // This function bypasses the cache (cachedGridArea()) as it is used to 2007 // This function bypasses the cache (cachedGridArea()) as it is used to
2008 // build it. 2008 // build it.
2009 GridSpan rowPositions = 2009 GridSpan rowPositions =
2010 GridPositionsResolver::resolveGridPositionsFromStyle( 2010 GridPositionsResolver::resolveGridPositionsFromStyle(
2011 *style(), *child, ForRows, m_autoRepeatRows); 2011 *style(), *child, ForRows, m_autoRepeatRows);
2012 GridSpan columnPositions = 2012 GridSpan columnPositions =
2013 GridPositionsResolver::resolveGridPositionsFromStyle( 2013 GridPositionsResolver::resolveGridPositionsFromStyle(
2014 *style(), *child, ForColumns, m_autoRepeatColumns); 2014 *style(), *child, ForColumns, m_autoRepeatColumns);
2015 m_gridItemArea.set(child, GridArea(rowPositions, columnPositions)); 2015 m_gridItemArea.set(child, GridArea(rowPositions, columnPositions));
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
3323 if (!m_gridItemArea.isEmpty()) 3323 if (!m_gridItemArea.isEmpty())
3324 GridPainter(*this).paintChildren(paintInfo, paintOffset); 3324 GridPainter(*this).paintChildren(paintInfo, paintOffset);
3325 } 3325 }
3326 3326
3327 bool LayoutGrid::cachedHasDefiniteLogicalHeight() const { 3327 bool LayoutGrid::cachedHasDefiniteLogicalHeight() const {
3328 SECURITY_DCHECK(m_hasDefiniteLogicalHeight); 3328 SECURITY_DCHECK(m_hasDefiniteLogicalHeight);
3329 return m_hasDefiniteLogicalHeight.value(); 3329 return m_hasDefiniteLogicalHeight.value();
3330 } 3330 }
3331 3331
3332 } // namespace blink 3332 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/GridPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698