@@ -16,6 +16,7 @@ public class LayoutItem
1616 public LayoutItem ? NextSibling { get ; internal set ; }
1717
1818 public LayoutEdges RequestedMargin = new ( ) ;
19+ public LayoutEdges RequestedPadding = new ( ) ;
1920 public LayoutVector RequestedSize = new ( ) ;
2021
2122 public LayoutRect Rect = new ( ) ;
@@ -111,6 +112,7 @@ public void Reset(bool withChildren = false)
111112 FirstChild = null ;
112113 NextSibling = null ;
113114 RequestedMargin = new ( ) ;
115+ RequestedPadding = new ( ) ;
114116 RequestedSize = new ( ) ;
115117 Rect = new ( ) ;
116118 }
@@ -268,7 +270,7 @@ private float CalcStackedSize(int dim)
268270 foreach ( var child in Children ) {
269271 need_size += child . Rect [ dim ] + child . Rect [ wdim ] + child . RequestedMargin [ wdim ] ;
270272 }
271- return need_size ;
273+ return RequestedPadding . GetDimension ( dim ) + need_size ;
272274 }
273275
274276 private float CalcOverlayedSize ( int dim )
@@ -280,7 +282,7 @@ private float CalcOverlayedSize(int dim)
280282 float child_size = child . Rect [ dim ] + child . Rect [ wdim ] + child . RequestedMargin [ wdim ] ;
281283 need_size = Math . Max ( need_size , child_size ) ;
282284 }
283- return need_size ;
285+ return RequestedPadding . GetDimension ( dim ) + need_size ;
284286 }
285287
286288 private float CalcWrappedStackedSize ( int dim )
@@ -295,7 +297,7 @@ private float CalcWrappedStackedSize(int dim)
295297 }
296298 need_size += child . Rect [ dim ] + child . Rect [ wdim ] + child . RequestedMargin [ wdim ] ;
297299 }
298- return Math . Max ( need_size2 , need_size ) ;
300+ return RequestedPadding . GetDimension ( dim ) + Math . Max ( need_size2 , need_size ) ;
299301 }
300302
301303 private float CalcWrappedOverlayedSize ( int dim )
@@ -311,7 +313,7 @@ private float CalcWrappedOverlayedSize(int dim)
311313 float child_size = child . Rect [ dim ] + child . Rect [ wdim ] + child . RequestedMargin [ wdim ] ;
312314 need_size = Math . Max ( need_size , child_size ) ;
313315 }
314- return need_size2 + need_size ;
316+ return RequestedPadding . GetDimension ( dim ) + need_size2 + need_size ;
315317 }
316318
317319 private void Arrange ( int dim )
@@ -339,7 +341,9 @@ private void Arrange(int dim)
339341 if ( ( Flags & 1 ) == ( uint ) dim ) {
340342 ArrangeStacked ( dim , false ) ;
341343 } else {
342- ArrangeOverlaySqueezedRange ( dim , FirstChild , null , Rect [ dim ] , Rect [ 2 + dim ] ) ;
344+ ArrangeOverlaySqueezedRange ( dim , FirstChild , null ,
345+ Rect [ dim ] + RequestedPadding [ dim ] ,
346+ Rect [ 2 + dim ] - RequestedPadding . GetDimension ( dim ) ) ;
343347 }
344348 break ;
345349
@@ -358,8 +362,8 @@ private void ArrangeStacked(int dim, bool wrap)
358362 {
359363 int wdim = dim + 2 ;
360364
361- float space = Rect [ wdim ] ;
362- float max_x2 = Rect [ dim ] + space ;
365+ float space = Rect [ wdim ] - RequestedPadding . GetDimension ( dim ) ;
366+ float max_x2 = Rect [ dim ] + space + RequestedPadding [ dim ] ;
363367
364368 var startChild = FirstChild ;
365369 while ( startChild != null ) {
@@ -441,7 +445,7 @@ private void ArrangeStacked(int dim, bool wrap)
441445 }
442446
443447 // distribute width among items
444- float x = Rect [ dim ] ;
448+ float x = Rect [ dim ] + RequestedPadding [ dim ] ;
445449 float x1 ;
446450 // second pass: distribute and rescale
447451 child = startChild ;
@@ -479,8 +483,8 @@ private void ArrangeStacked(int dim, bool wrap)
479483 private void ArrangeOverlay ( int dim )
480484 {
481485 int wdim = dim + 2 ;
482- float offset = Rect [ dim ] ;
483- float space = Rect [ wdim ] ;
486+ float offset = Rect [ dim ] + RequestedPadding [ dim ] ;
487+ float space = Rect [ wdim ] - RequestedPadding . GetDimension ( dim ) ;
484488
485489 foreach ( var child in Children ) {
486490 var b_flags = ( BehaveFlags ) ( ( uint ) child . Behave >> dim ) ;
@@ -509,7 +513,7 @@ private void ArrangeOverlay(int dim)
509513 private float ArrangeWrappedOverlaySqueezed ( int dim )
510514 {
511515 int wdim = dim + 2 ;
512- float offset = Rect [ dim ] ;
516+ float offset = Rect [ dim ] + RequestedPadding [ dim ] ;
513517 float need_size = 0 ;
514518 var startChild = FirstChild ;
515519 foreach ( var child in Children ) {
0 commit comments