Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
| index c310533d05364a05b7b3dded3c7ce4408e07dc38..fb66ae9a465f066a436357c7099777df968764e3 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
| @@ -848,7 +848,7 @@ const GridTrackSize& LayoutGrid::rawGridTrackSize(GridTrackSizingDirection direc |
| bool isRowAxis = direction == ForColumns; |
| const Vector<GridTrackSize>& trackStyles = isRowAxis ? styleRef().gridTemplateColumns() : styleRef().gridTemplateRows(); |
| const Vector<GridTrackSize>& autoRepeatTrackStyles = isRowAxis ? styleRef().gridAutoRepeatColumns() : styleRef().gridAutoRepeatRows(); |
| - const GridTrackSize& autoTrackSize = isRowAxis ? styleRef().gridAutoColumns() : styleRef().gridAutoRows(); |
| + const Vector<GridTrackSize>& autoTrackStyles = isRowAxis ? styleRef().gridAutoColumns() : styleRef().gridAutoRows(); |
| size_t insertionPoint = isRowAxis ? styleRef().gridAutoRepeatColumnsInsertionPoint() : styleRef().gridAutoRepeatRowsInsertionPoint(); |
| size_t repetitions = autoRepeatCountForDirection(direction); |
| @@ -858,12 +858,17 @@ const GridTrackSize& LayoutGrid::rawGridTrackSize(GridTrackSizingDirection direc |
| size_t explicitTracksCount = trackStyles.size() + repetitions; |
| int untranslatedIndexAsInt = translatedIndex + (isRowAxis ? m_smallestColumnStart : m_smallestRowStart); |
| - if (untranslatedIndexAsInt < 0) |
| - return autoTrackSize; |
| + if (untranslatedIndexAsInt < 0) { |
| + size_t autoTrackStylesSize = autoTrackStyles.size(); |
|
Manuel Rego
2016/07/22 08:24:55
What about defining it as an int to avoid the cast
svillar
2016/07/22 13:08:28
We're using it as size_t later anyway.
|
| + int index = untranslatedIndexAsInt % static_cast<int>(autoTrackStylesSize); |
| + // We need to traspose the index because the first negative implicit line will get the last defined auto track and so on. |
| + index += index ? autoTrackStylesSize : 0; |
| + return autoTrackStyles[index]; |
| + } |
| size_t untranslatedIndex = static_cast<size_t>(untranslatedIndexAsInt); |
| if (untranslatedIndex >= explicitTracksCount) |
| - return autoTrackSize; |
| + return autoTrackStyles[(untranslatedIndex - explicitTracksCount) % autoTrackStyles.size()]; |
| if (LIKELY(!repetitions) || untranslatedIndex < insertionPoint) |
| return trackStyles[untranslatedIndex]; |