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

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

Issue 1608943003: [css-grid] Fix positioned items in grids with implicit tracks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed test as we need explicit lines Created 4 years, 11 months 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
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 1484 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 return; 1495 return;
1496 } 1496 }
1497 1497
1498 // For positioned items we cannot use GridSpan::translate(). Because we coul d end up with negative values, as the positioned items do not create implicit tr acks per spec. 1498 // For positioned items we cannot use GridSpan::translate(). Because we coul d end up with negative values, as the positioned items do not create implicit tr acks per spec.
1499 int smallestStart = abs(isForColumns ? m_smallestColumnStart : m_smallestRow Start); 1499 int smallestStart = abs(isForColumns ? m_smallestColumnStart : m_smallestRow Start);
1500 int resolvedInitialPosition = positions.untranslatedResolvedInitialPosition( ) + smallestStart; 1500 int resolvedInitialPosition = positions.untranslatedResolvedInitialPosition( ) + smallestStart;
1501 int resolvedFinalPosition = positions.untranslatedResolvedFinalPosition() + smallestStart; 1501 int resolvedFinalPosition = positions.untranslatedResolvedFinalPosition() + smallestStart;
1502 1502
1503 GridPosition startPosition = isForColumns ? child.style()->gridColumnStart() : child.style()->gridRowStart(); 1503 GridPosition startPosition = isForColumns ? child.style()->gridColumnStart() : child.style()->gridRowStart();
1504 GridPosition endPosition = isForColumns ? child.style()->gridColumnEnd() : c hild.style()->gridRowEnd(); 1504 GridPosition endPosition = isForColumns ? child.style()->gridColumnEnd() : c hild.style()->gridRowEnd();
1505 int lastExplicitLine = isForColumns ? gridColumnCount() : gridRowCount(); 1505 int firstExplicitLine = smallestStart;
1506 int lastExplicitLine = (isForColumns ? GridResolvedPosition::explicitGridCol umnCount(styleRef()) : GridResolvedPosition::explicitGridRowCount(styleRef())) + smallestStart;
1506 1507
1507 bool startIsAuto = startPosition.isAuto() 1508 bool startIsAuto = startPosition.isAuto()
1508 || (startPosition.isNamedGridArea() && !GridResolvedPosition::isValidNam edLineOrArea(startPosition.namedGridLine(), styleRef(), GridResolvedPosition::in itialPositionSide(direction))) 1509 || (startPosition.isNamedGridArea() && !GridResolvedPosition::isValidNam edLineOrArea(startPosition.namedGridLine(), styleRef(), GridResolvedPosition::in itialPositionSide(direction)))
1509 || (resolvedInitialPosition < 0) 1510 || (resolvedInitialPosition < firstExplicitLine)
1510 || (resolvedInitialPosition > lastExplicitLine); 1511 || (resolvedInitialPosition > lastExplicitLine);
1511 bool endIsAuto = endPosition.isAuto() 1512 bool endIsAuto = endPosition.isAuto()
1512 || (endPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamed LineOrArea(endPosition.namedGridLine(), styleRef(), GridResolvedPosition::finalP ositionSide(direction))) 1513 || (endPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamed LineOrArea(endPosition.namedGridLine(), styleRef(), GridResolvedPosition::finalP ositionSide(direction)))
1513 || (resolvedFinalPosition < 0) 1514 || (resolvedFinalPosition < firstExplicitLine)
1514 || (resolvedFinalPosition > lastExplicitLine); 1515 || (resolvedFinalPosition > lastExplicitLine);
1515 1516
1516 size_t initialPosition = startIsAuto ? 0 : resolvedInitialPosition; 1517 size_t initialPosition = startIsAuto ? 0 : resolvedInitialPosition;
1517 size_t finalPosition = endIsAuto ? lastExplicitLine : resolvedFinalPosition; 1518 size_t finalPosition = endIsAuto ? lastExplicitLine : resolvedFinalPosition;
1518 1519
1519 LayoutUnit start = startIsAuto ? LayoutUnit() : isForColumns ? m_columnPosi tions[initialPosition] : m_rowPositions[initialPosition]; 1520 LayoutUnit start = startIsAuto ? LayoutUnit() : isForColumns ? m_columnPosi tions[initialPosition] : m_rowPositions[initialPosition];
1520 LayoutUnit end = endIsAuto ? isForColumns ? logicalWidth() : logicalHeight() : isForColumns ? m_columnPositions[finalPosition] : m_rowPositions[finalPositi on]; 1521 LayoutUnit end = endIsAuto ? isForColumns ? logicalWidth() : logicalHeight() : isForColumns ? m_columnPositions[finalPosition] : m_rowPositions[finalPositi on];
1521 1522
1522 breadth = end - start; 1523 breadth = end - start;
1523 1524
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
2071 2072
2072 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child)); 2073 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child));
2073 } 2074 }
2074 2075
2075 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa intOffset) const 2076 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa intOffset) const
2076 { 2077 {
2077 GridPainter(*this).paintChildren(paintInfo, paintOffset); 2078 GridPainter(*this).paintChildren(paintInfo, paintOffset);
2078 } 2079 }
2079 2080
2080 } // namespace blink 2081 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698