| Index: third_party/WebKit/Source/core/paint/GridPainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/GridPainter.cpp b/third_party/WebKit/Source/core/paint/GridPainter.cpp
|
| index 299e603a4b8777827661fa081b084b95af6cc753..61e1098ca9f37a7cb3f234c7416e18b8ea409e8e 100644
|
| --- a/third_party/WebKit/Source/core/paint/GridPainter.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/GridPainter.cpp
|
| @@ -46,9 +46,24 @@ void GridPainter::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& p
|
| LayoutRect localPaintInvalidationRect = LayoutRect(paintInfo.cullRect().m_rect);
|
| localPaintInvalidationRect.moveBy(-paintOffset);
|
|
|
| - GridSpan dirtiedColumns = dirtiedGridAreas(m_layoutGrid.columnPositions(), localPaintInvalidationRect.x(), localPaintInvalidationRect.maxX());
|
| + Vector<LayoutUnit> columnPositions = m_layoutGrid.columnPositions();
|
| + if (!m_layoutGrid.styleRef().isLeftToRightDirection()) {
|
| + // Translate columnPositions in RTL as we need the physical coordinates of the columns in order to call dirtiedGridAreas().
|
| + for (size_t i = 0; i < columnPositions.size(); i++)
|
| + columnPositions[i] = m_layoutGrid.translateRTLCoordinate(columnPositions[i]);
|
| + // We change the order of tracks in columnPositions, as in RTL the leftmost track will be the last one.
|
| + std::sort(columnPositions.begin(), columnPositions.end());
|
| + }
|
| +
|
| + GridSpan dirtiedColumns = dirtiedGridAreas(columnPositions, localPaintInvalidationRect.x(), localPaintInvalidationRect.maxX());
|
| GridSpan dirtiedRows = dirtiedGridAreas(m_layoutGrid.rowPositions(), localPaintInvalidationRect.y(), localPaintInvalidationRect.maxY());
|
|
|
| + if (!m_layoutGrid.styleRef().isLeftToRightDirection()) {
|
| + // As we changed the order of tracks previously, we need to swap the dirtied columns in RTL.
|
| + size_t lastLine = columnPositions.size() - 1;
|
| + dirtiedColumns = GridSpan::translatedDefiniteGridSpan(lastLine - dirtiedColumns.endLine(), lastLine - dirtiedColumns.startLine());
|
| + }
|
| +
|
| Vector<std::pair<LayoutBox*, size_t>> gridItemsToBePainted;
|
|
|
| for (const auto& row : dirtiedRows) {
|
|
|