Commit 66742465 authored by Adam Barth's avatar Adam Barth Committed by GitHub

Rename SliverLogicalParentData.scrollOffset to layoutOffset (#7871)

This quantity is actually the layoutOffset of the child, not its scroll offset.
parent 20402ba7
...@@ -553,21 +553,23 @@ class SliverHitTestEntry extends HitTestEntry { ...@@ -553,21 +553,23 @@ class SliverHitTestEntry extends HitTestEntry {
} }
/// Parent data structure used by parents of slivers that position their /// Parent data structure used by parents of slivers that position their
/// children using scroll offsets. /// children using layout offsets.
/// ///
/// This data structure is optimised for fast layout. It is best used by parents /// This data structure is optimised for fast layout. It is best used by parents
/// that expect to have many children whose relative positions don't change even /// that expect to have many children whose relative positions don't change even
/// when the scroll offset does. /// when the scroll offset does.
class SliverLogicalParentData extends ParentData { class SliverLogicalParentData extends ParentData {
/// The distance from from the zero scroll offset of the parent sliver (the /// The position of the child relative to the zero scroll offset.
/// line at which its [SliverConstraints.scrollOffset] is zero) to the side of ///
/// the child closest to that offset. /// The number of pixels from from the zero scroll offset of the parent sliver
/// (the line at which its [SliverConstraints.scrollOffset] is zero) to the
/// side of the child closest to that offset.
/// ///
/// In a typical list, this does not change as the parent is scrolled. /// In a typical list, this does not change as the parent is scrolled.
double scrollOffset = 0.0; double layoutOffset = 0.0;
@override @override
String toString() => 'scrollOffset=${scrollOffset.toStringAsFixed(1)}'; String toString() => 'layoutOffset=${layoutOffset.toStringAsFixed(1)}';
} }
class SliverLogicalContainerParentData extends SliverLogicalParentData with ContainerParentDataMixin<RenderSliver> { } class SliverLogicalContainerParentData extends SliverLogicalParentData with ContainerParentDataMixin<RenderSliver> { }
...@@ -828,7 +830,7 @@ abstract class RenderSliver extends RenderObject { ...@@ -828,7 +830,7 @@ abstract class RenderSliver extends RenderObject {
/// of the visible portion of the sliver to the bottom of the child. In both /// of the visible portion of the sliver to the bottom of the child. In both
/// cases, this is the direction of increasing /// cases, this is the direction of increasing
/// [SliverConstraints.scrollOffset] and /// [SliverConstraints.scrollOffset] and
/// [SliverLogicalParentData.scrollOffset]. /// [SliverLogicalParentData.layoutOffset].
/// ///
/// Calling this for a child that is not visible is not valid. /// Calling this for a child that is not visible is not valid.
/// ///
...@@ -1244,7 +1246,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi ...@@ -1244,7 +1246,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi
return childLayoutGeometry.scrollOffsetCorrection; return childLayoutGeometry.scrollOffsetCorrection;
// geometry // geometry
updateChildPaintOffset(child, layoutOffset, growthDirection); updateChildLayoutOffset(child, layoutOffset, growthDirection);
maxPaintOffset = math.max(layoutOffset + childLayoutGeometry.paintExtent, maxPaintOffset); maxPaintOffset = math.max(layoutOffset + childLayoutGeometry.paintExtent, maxPaintOffset);
scrollOffset -= childLayoutGeometry.scrollExtent; scrollOffset -= childLayoutGeometry.scrollExtent;
layoutOffset += childLayoutGeometry.layoutExtent; layoutOffset += childLayoutGeometry.layoutExtent;
...@@ -1343,7 +1345,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi ...@@ -1343,7 +1345,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi
} }
@protected @protected
Offset computeAbsolutePaintOffset(RenderSliver child, double paintOffset, GrowthDirection growthDirection) { Offset computeAbsolutePaintOffset(RenderSliver child, double layoutOffset, GrowthDirection growthDirection) {
assert(hasSize); // this is only usable once we have a size assert(hasSize); // this is only usable once we have a size
assert(axisDirection != null); assert(axisDirection != null);
assert(growthDirection != null); assert(growthDirection != null);
...@@ -1351,13 +1353,13 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi ...@@ -1351,13 +1353,13 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi
assert(child.geometry != null); assert(child.geometry != null);
switch (applyGrowthDirectionToAxisDirection(axisDirection, growthDirection)) { switch (applyGrowthDirectionToAxisDirection(axisDirection, growthDirection)) {
case AxisDirection.up: case AxisDirection.up:
return new Offset(0.0, size.height - (paintOffset + child.geometry.paintExtent)); return new Offset(0.0, size.height - (layoutOffset + child.geometry.paintExtent));
case AxisDirection.right: case AxisDirection.right:
return new Offset(paintOffset, 0.0); return new Offset(layoutOffset, 0.0);
case AxisDirection.down: case AxisDirection.down:
return new Offset(0.0, paintOffset); return new Offset(0.0, layoutOffset);
case AxisDirection.left: case AxisDirection.left:
return new Offset(size.width - (paintOffset + child.geometry.paintExtent), 0.0); return new Offset(size.width - (layoutOffset + child.geometry.paintExtent), 0.0);
} }
return null; return null;
} }
...@@ -1401,7 +1403,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi ...@@ -1401,7 +1403,7 @@ abstract class RenderViewportBase2<ParentDataClass extends ContainerParentDataMi
void updateOutOfBoundsData(GrowthDirection growthDirection, SliverGeometry childLayoutGeometry); void updateOutOfBoundsData(GrowthDirection growthDirection, SliverGeometry childLayoutGeometry);
@protected @protected
void updateChildPaintOffset(RenderSliver child, double paintOffset, GrowthDirection growthDirection); void updateChildLayoutOffset(RenderSliver child, double layoutOffset, GrowthDirection growthDirection);
@protected @protected
Offset paintOffsetOf(RenderSliver child); Offset paintOffsetOf(RenderSliver child);
...@@ -1679,9 +1681,9 @@ class RenderViewport2 extends RenderViewportBase2<SliverPhysicalContainerParentD ...@@ -1679,9 +1681,9 @@ class RenderViewport2 extends RenderViewportBase2<SliverPhysicalContainerParentD
} }
@override @override
void updateChildPaintOffset(RenderSliver child, double paintOffset, GrowthDirection growthDirection) { void updateChildLayoutOffset(RenderSliver child, double layoutOffset, GrowthDirection growthDirection) {
final SliverPhysicalParentData childParentData = child.parentData; final SliverPhysicalParentData childParentData = child.parentData;
childParentData.paintOffset = computeAbsolutePaintOffset(child, paintOffset, growthDirection); childParentData.paintOffset = computeAbsolutePaintOffset(child, layoutOffset, growthDirection);
} }
@override @override
...@@ -1935,16 +1937,16 @@ class RenderShrinkWrappingViewport extends RenderViewportBase2<SliverLogicalCont ...@@ -1935,16 +1937,16 @@ class RenderShrinkWrappingViewport extends RenderViewportBase2<SliverLogicalCont
} }
@override @override
void updateChildPaintOffset(RenderSliver child, double paintOffset, GrowthDirection growthDirection) { void updateChildLayoutOffset(RenderSliver child, double layoutOffset, GrowthDirection growthDirection) {
assert(growthDirection == GrowthDirection.forward); assert(growthDirection == GrowthDirection.forward);
final SliverLogicalParentData childParentData = child.parentData; final SliverLogicalParentData childParentData = child.parentData;
childParentData.scrollOffset = paintOffset; childParentData.layoutOffset = layoutOffset;
} }
@override @override
Offset paintOffsetOf(RenderSliver child) { Offset paintOffsetOf(RenderSliver child) {
final SliverLogicalParentData childParentData = child.parentData; final SliverLogicalParentData childParentData = child.parentData;
return computeAbsolutePaintOffset(child, childParentData.scrollOffset, GrowthDirection.forward); return computeAbsolutePaintOffset(child, childParentData.layoutOffset, GrowthDirection.forward);
} }
@override @override
...@@ -1963,11 +1965,11 @@ class RenderShrinkWrappingViewport extends RenderViewportBase2<SliverLogicalCont ...@@ -1963,11 +1965,11 @@ class RenderShrinkWrappingViewport extends RenderViewportBase2<SliverLogicalCont
switch (applyGrowthDirectionToAxisDirection(child.constraints.axisDirection, child.constraints.growthDirection)) { switch (applyGrowthDirectionToAxisDirection(child.constraints.axisDirection, child.constraints.growthDirection)) {
case AxisDirection.down: case AxisDirection.down:
case AxisDirection.right: case AxisDirection.right:
return parentMainAxisPosition - childParentData.scrollOffset; return parentMainAxisPosition - childParentData.layoutOffset;
case AxisDirection.up: case AxisDirection.up:
return (size.height - parentMainAxisPosition) - childParentData.scrollOffset; return (size.height - parentMainAxisPosition) - childParentData.layoutOffset;
case AxisDirection.left: case AxisDirection.left:
return (size.width - parentMainAxisPosition) - childParentData.scrollOffset; return (size.width - parentMainAxisPosition) - childParentData.layoutOffset;
} }
return 0.0; return 0.0;
} }
......
...@@ -61,7 +61,7 @@ abstract class RenderSliverFixedExtentBoxAdaptor extends RenderSliverMultiBoxAda ...@@ -61,7 +61,7 @@ abstract class RenderSliverFixedExtentBoxAdaptor extends RenderSliverMultiBoxAda
for (int index = indexOf(firstChild) - 1; index >= firstIndex; --index) { for (int index = indexOf(firstChild) - 1; index >= firstIndex; --index) {
final RenderBox child = insertAndLayoutLeadingChild(childConstraints); final RenderBox child = insertAndLayoutLeadingChild(childConstraints);
final SliverMultiBoxAdaptorParentData childParentData = child.parentData; final SliverMultiBoxAdaptorParentData childParentData = child.parentData;
childParentData.scrollOffset = indexToScrollOffset(index); childParentData.layoutOffset = indexToScrollOffset(index);
assert(childParentData.index == index); assert(childParentData.index == index);
trailingChildWithLayout ??= child; trailingChildWithLayout ??= child;
} }
...@@ -87,7 +87,7 @@ abstract class RenderSliverFixedExtentBoxAdaptor extends RenderSliverMultiBoxAda ...@@ -87,7 +87,7 @@ abstract class RenderSliverFixedExtentBoxAdaptor extends RenderSliverMultiBoxAda
trailingChildWithLayout = child; trailingChildWithLayout = child;
assert(child != null); assert(child != null);
final SliverMultiBoxAdaptorParentData childParentData = child.parentData; final SliverMultiBoxAdaptorParentData childParentData = child.parentData;
childParentData.scrollOffset = indexToScrollOffset(childParentData.index); childParentData.layoutOffset = indexToScrollOffset(childParentData.index);
} }
final int lastIndex = indexOf(lastChild); final int lastIndex = indexOf(lastChild);
......
...@@ -348,7 +348,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor { ...@@ -348,7 +348,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor {
final RenderBox child = insertAndLayoutLeadingChild( final RenderBox child = insertAndLayoutLeadingChild(
gridGeometry.getBoxConstraints(constraints)); gridGeometry.getBoxConstraints(constraints));
final SliverGridParentData childParentData = child.parentData; final SliverGridParentData childParentData = child.parentData;
childParentData.scrollOffset = gridGeometry.scrollOffset; childParentData.layoutOffset = gridGeometry.scrollOffset;
childParentData.crossAxisOffset = gridGeometry.crossAxisOffset; childParentData.crossAxisOffset = gridGeometry.crossAxisOffset;
assert(childParentData.index == index); assert(childParentData.index == index);
trailingChildWithLayout ??= child; trailingChildWithLayout ??= child;
...@@ -362,7 +362,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor { ...@@ -362,7 +362,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor {
firstChild.layout(firstChildGridGeometry.getBoxConstraints(constraints)); firstChild.layout(firstChildGridGeometry.getBoxConstraints(constraints));
final SliverGridParentData childParentData = firstChild.parentData; final SliverGridParentData childParentData = firstChild.parentData;
childParentData.crossAxisOffset = firstChildGridGeometry.crossAxisOffset; childParentData.crossAxisOffset = firstChildGridGeometry.crossAxisOffset;
assert(childParentData.scrollOffset == assert(childParentData.layoutOffset ==
firstChildGridGeometry.scrollOffset); firstChildGridGeometry.scrollOffset);
trailingChildWithLayout = firstChild; trailingChildWithLayout = firstChild;
} }
...@@ -386,7 +386,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor { ...@@ -386,7 +386,7 @@ class RenderSliverGrid extends RenderSliverMultiBoxAdaptor {
trailingChildWithLayout = child; trailingChildWithLayout = child;
assert(child != null); assert(child != null);
final SliverGridParentData childParentData = child.parentData; final SliverGridParentData childParentData = child.parentData;
childParentData.scrollOffset = gridGeometry.scrollOffset; childParentData.layoutOffset = gridGeometry.scrollOffset;
childParentData.crossAxisOffset = gridGeometry.crossAxisOffset; childParentData.crossAxisOffset = gridGeometry.crossAxisOffset;
assert(childParentData.index == index); assert(childParentData.index == index);
if (gridGeometry.scrollOffset > trailingScrollOffset) if (gridGeometry.scrollOffset > trailingScrollOffset)
......
...@@ -76,7 +76,7 @@ class RenderSliverList extends RenderSliverMultiBoxAdaptor { ...@@ -76,7 +76,7 @@ class RenderSliverList extends RenderSliverMultiBoxAdaptor {
return; return;
} }
final SliverMultiBoxAdaptorParentData childParentData = earliestUsefulChild.parentData; final SliverMultiBoxAdaptorParentData childParentData = earliestUsefulChild.parentData;
childParentData.scrollOffset = earliestScrollOffset - paintExtentOf(firstChild); childParentData.layoutOffset = earliestScrollOffset - paintExtentOf(firstChild);
assert(earliestUsefulChild == firstChild); assert(earliestUsefulChild == firstChild);
leadingChildWithLayout = earliestUsefulChild; leadingChildWithLayout = earliestUsefulChild;
trailingChildWithLayout ??= earliestUsefulChild; trailingChildWithLayout ??= earliestUsefulChild;
...@@ -136,7 +136,7 @@ class RenderSliverList extends RenderSliverMultiBoxAdaptor { ...@@ -136,7 +136,7 @@ class RenderSliverList extends RenderSliverMultiBoxAdaptor {
} }
assert(child != null); assert(child != null);
final SliverMultiBoxAdaptorParentData childParentData = child.parentData; final SliverMultiBoxAdaptorParentData childParentData = child.parentData;
childParentData.scrollOffset = endScrollOffset; childParentData.layoutOffset = endScrollOffset;
assert(childParentData.index == index); assert(childParentData.index == index);
endScrollOffset = childScrollOffset(child) + paintExtentOf(child); endScrollOffset = childScrollOffset(child) + paintExtentOf(child);
return true; return true;
......
...@@ -171,7 +171,7 @@ abstract class RenderSliverMultiBoxAdaptor extends RenderSliver ...@@ -171,7 +171,7 @@ abstract class RenderSliverMultiBoxAdaptor extends RenderSliver
assert(firstChild == lastChild); assert(firstChild == lastChild);
assert(indexOf(firstChild) == index); assert(indexOf(firstChild) == index);
final SliverMultiBoxAdaptorParentData firstChildParentData = firstChild.parentData; final SliverMultiBoxAdaptorParentData firstChildParentData = firstChild.parentData;
firstChildParentData.scrollOffset = scrollOffset; firstChildParentData.layoutOffset = scrollOffset;
result = true; result = true;
} else { } else {
result = false; result = false;
...@@ -304,8 +304,8 @@ abstract class RenderSliverMultiBoxAdaptor extends RenderSliver ...@@ -304,8 +304,8 @@ abstract class RenderSliverMultiBoxAdaptor extends RenderSliver
assert(child != null); assert(child != null);
assert(child.parent == this); assert(child.parent == this);
final SliverMultiBoxAdaptorParentData childParentData = child.parentData; final SliverMultiBoxAdaptorParentData childParentData = child.parentData;
assert(childParentData.scrollOffset != null); assert(childParentData.layoutOffset != null);
return childParentData.scrollOffset; return childParentData.layoutOffset;
} }
@override @override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment