diff --git a/examples/rendering/baseline.dart b/examples/rendering/baseline.dart index 8d9e04c2168..c3f730ad2b8 100644 --- a/examples/rendering/baseline.dart +++ b/examples/rendering/baseline.dart @@ -37,7 +37,7 @@ RenderBox getBox(double lh) { padding: new EdgeDims.all(10.0), child: new RenderCustomPaint( child: paragraph, - onPaint: (canvas, size) { + onPaint: (PaintingCanvas canvas, Size size) { double baseline = paragraph.getDistanceToBaseline(TextBaseline.alphabetic); double w = paragraph.getMaxIntrinsicWidth(new BoxConstraints.loose(size)); double h = paragraph.getMaxIntrinsicHeight(new BoxConstraints.loose(size)); diff --git a/sky/packages/sky/lib/src/rendering/overflow.dart b/sky/packages/sky/lib/src/rendering/overflow.dart index 7090f44b556..586cdeeba70 100644 --- a/sky/packages/sky/lib/src/rendering/overflow.dart +++ b/sky/packages/sky/lib/src/rendering/overflow.dart @@ -108,6 +108,12 @@ class RenderOverflowBox extends RenderBox with RenderObjectWithChildMixin true; void performResize() { diff --git a/sky/unit/test/rendering/overflow_test.dart b/sky/unit/test/rendering/overflow_test.dart new file mode 100644 index 00000000000..2528f589dd2 --- /dev/null +++ b/sky/unit/test/rendering/overflow_test.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:test/test.dart'; + +import 'rendering_tester.dart'; + +void main() { + test("overflow should not affect baseline", () { + RenderBox root, child, text; + double baseline1, baseline2, height1, height2; + + root = new RenderPositionedBox( + child: new RenderCustomPaint( + child: child = text = new RenderParagraph(new PlainTextSpan('Hello World')), + onPaint: (PaintingCanvas canvas, Size size) { + baseline1 = child.getDistanceToBaseline(TextBaseline.alphabetic); + height1 = text.size.height; + } + ) + ); + layout(root, phase: EnginePhase.paint); + + root = new RenderPositionedBox( + child: new RenderCustomPaint( + child: child = new RenderOverflowBox( + child: text = new RenderParagraph(new PlainTextSpan('Hello World')), + maxHeight: height1 / 2.0 + ), + onPaint: (PaintingCanvas canvas, Size size) { + baseline2 = child.getDistanceToBaseline(TextBaseline.alphabetic); + height2 = text.size.height; + } + ) + ); + layout(root, phase: EnginePhase.paint); + + expect(baseline1, lessThan(height1)); + expect(height2, equals(height1 / 2.0)); + expect(baseline2, equals(baseline1)); + expect(baseline2, greaterThan(height2)); + }); +}