Skip to content

Commit 0d1cc33

Browse files
_RenderScaledInlineWidget constrains child size (#130648)
Fixes flutter/flutter#130588
1 parent bf4d659 commit 0d1cc33

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

packages/flutter/lib/src/widgets/widget_span.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ class _RenderScaledInlineWidget extends RenderBox with RenderObjectWithChildMixi
375375
// Only constrain the width to the maximum width of the paragraph.
376376
// Leave height unconstrained, which will overflow if expanded past.
377377
child.layout(BoxConstraints(maxWidth: constraints.maxWidth / scale), parentUsesSize: true);
378-
size = child.size * scale;
378+
size = constraints.constrain(child.size * scale);
379379
}
380380

381381
@override

packages/flutter/test/widgets/text_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,23 @@ void main() {
266266
expect(renderText.size.height, singleLineHeight * textScaleFactor * 3);
267267
});
268268

269+
testWidgets("Inline widgets' scaled sizes are constrained", (WidgetTester tester) async {
270+
// Regression test for https://github.com/flutter/flutter/issues/130588
271+
await tester.pumpWidget(
272+
const Directionality(
273+
textDirection: TextDirection.ltr,
274+
child: Center(
275+
child: SizedBox(
276+
width: 100.3,
277+
child: Text.rich(WidgetSpan(child: Row()), textScaleFactor: 0.3),
278+
),
279+
),
280+
),
281+
);
282+
283+
expect(tester.takeException(), isNull);
284+
});
285+
269286
testWidgets('semanticsLabel can override text label', (WidgetTester tester) async {
270287
final SemanticsTester semantics = SemanticsTester(tester);
271288
await tester.pumpWidget(

0 commit comments

Comments
 (0)