Skip to content

Commit 841fe90

Browse files
authored
[two_dimensional_scrollables] Fix TableSpanDecoration rects when axes are reversed (#5916)
Fixes flutter/flutter#141704 This fixes the rect computation for TableSpanDecorations when one or both axes are reversed. We previously fixed similar issues when the clipRects applied to areas of the table did not account for reversed. This is another similar case. - #5187 - #5038 ![image](https://github.com/flutter/packages/assets/16964204/ae7c6872-c740-4617-95a4-8302a3085d59)
1 parent 88b7d16 commit 841fe90

File tree

4 files changed

+697
-7
lines changed

4 files changed

+697
-7
lines changed

packages/two_dimensional_scrollables/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.0.6
2+
3+
* Fixes an error in TableSpanDecoration when one or both axes are reversed.
4+
15
## 0.0.5+2
26

37
* Fixes must_call_super lint warning from pending framework change.

packages/two_dimensional_scrollables/lib/src/table_view/table.dart

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -861,31 +861,41 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
861861
)!;
862862

863863
Rect getColumnRect(bool consumePadding) {
864+
final ({double leading, double trailing}) offsetCorrection =
865+
axisDirectionIsReversed(verticalAxisDirection)
866+
? (
867+
leading: leadingCell.size.height,
868+
trailing: trailingCell.size.height,
869+
)
870+
: (leading: 0.0, trailing: 0.0);
871+
864872
return Rect.fromPoints(
865873
parentDataOf(leadingCell).paintOffset! +
866874
offset -
867875
Offset(
868876
consumePadding ? columnSpan.padding.leading : 0.0,
869-
rowSpan.padding.leading,
877+
rowSpan.padding.leading - offsetCorrection.leading,
870878
),
871879
parentDataOf(trailingCell).paintOffset! +
872880
offset +
873881
Offset(trailingCell.size.width, trailingCell.size.height) +
874882
Offset(
875883
consumePadding ? columnSpan.padding.trailing : 0.0,
876-
rowSpan.padding.trailing,
884+
rowSpan.padding.trailing - offsetCorrection.trailing,
877885
),
878886
);
879887
}
880888

881889
if (columnSpan.backgroundDecoration != null) {
882890
final Rect rect = getColumnRect(
883-
columnSpan.backgroundDecoration!.consumeSpanPadding);
891+
columnSpan.backgroundDecoration!.consumeSpanPadding,
892+
);
884893
backgroundColumns[rect] = columnSpan.backgroundDecoration!;
885894
}
886895
if (columnSpan.foregroundDecoration != null) {
887896
final Rect rect = getColumnRect(
888-
columnSpan.foregroundDecoration!.consumeSpanPadding);
897+
columnSpan.foregroundDecoration!.consumeSpanPadding,
898+
);
889899
foregroundColumns[rect] = columnSpan.foregroundDecoration!;
890900
}
891901
}
@@ -910,18 +920,25 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
910920
)!;
911921

912922
Rect getRowRect(bool consumePadding) {
923+
final ({double leading, double trailing}) offsetCorrection =
924+
axisDirectionIsReversed(horizontalAxisDirection)
925+
? (
926+
leading: leadingCell.size.width,
927+
trailing: trailingCell.size.width,
928+
)
929+
: (leading: 0.0, trailing: 0.0);
913930
return Rect.fromPoints(
914931
parentDataOf(leadingCell).paintOffset! +
915932
offset -
916933
Offset(
917-
columnSpan.padding.leading,
934+
columnSpan.padding.leading - offsetCorrection.leading,
918935
consumePadding ? rowSpan.padding.leading : 0.0,
919936
),
920937
parentDataOf(trailingCell).paintOffset! +
921938
offset +
922939
Offset(trailingCell.size.width, trailingCell.size.height) +
923940
Offset(
924-
columnSpan.padding.leading,
941+
columnSpan.padding.leading - offsetCorrection.trailing,
925942
consumePadding ? rowSpan.padding.trailing : 0.0,
926943
),
927944
);

packages/two_dimensional_scrollables/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: two_dimensional_scrollables
22
description: Widgets that scroll using the two dimensional scrolling foundation.
3-
version: 0.0.5+2
3+
version: 0.0.6
44
repository: https://github.com/flutter/packages/tree/main/packages/two_dimensional_scrollables
55
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+two_dimensional_scrollables%22+
66

0 commit comments

Comments
 (0)