From dfb89fee8cd4c2483dbbabc77a70be335d723f30 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Fri, 4 Sep 2015 12:25:26 -0700 Subject: [PATCH] Disallow negative padding and margins They're just as crazy in this system as they are in the web. --- sky/packages/sky/lib/painting/box_painter.dart | 2 ++ sky/packages/sky/lib/src/rendering/shifted_box.dart | 1 + sky/packages/sky/lib/src/widgets/basic.dart | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sky/packages/sky/lib/painting/box_painter.dart b/sky/packages/sky/lib/painting/box_painter.dart index 7fb94f5c715..0cb2efdf95b 100644 --- a/sky/packages/sky/lib/painting/box_painter.dart +++ b/sky/packages/sky/lib/painting/box_painter.dart @@ -45,6 +45,8 @@ class EdgeDims { /// The offset from the left final double left; + bool get isNonNegative => top >= 0.0 && right >= 0.0 && bottom >= 0.0 && left >= 0.0; + bool operator ==(other) { if (identical(this, other)) return true; diff --git a/sky/packages/sky/lib/src/rendering/shifted_box.dart b/sky/packages/sky/lib/src/rendering/shifted_box.dart index a7c32f66043..1376b836f1e 100644 --- a/sky/packages/sky/lib/src/rendering/shifted_box.dart +++ b/sky/packages/sky/lib/src/rendering/shifted_box.dart @@ -79,6 +79,7 @@ class RenderPadding extends RenderShiftedBox { EdgeDims get padding => _padding; void set padding (EdgeDims value) { assert(value != null); + assert(value.isNonNegative); if (_padding == value) return; _padding = value; diff --git a/sky/packages/sky/lib/src/widgets/basic.dart b/sky/packages/sky/lib/src/widgets/basic.dart index 956ad2000c4..b986c2ad16d 100644 --- a/sky/packages/sky/lib/src/widgets/basic.dart +++ b/sky/packages/sky/lib/src/widgets/basic.dart @@ -393,7 +393,10 @@ class Container extends Component { this.margin, this.padding, this.transform - }) : super(key: key); + }) : super(key: key) { + assert(margin == null || margin.isNonNegative); + assert(padding == null || padding.isNonNegative); + } final Widget child; final BoxConstraints constraints;