@@ -673,13 +673,20 @@ pub fn Display(comptime T: type) type {
673673 pub fn relayout (display : * Self ) void {
674674 if (display .need_relayout == false ) return ;
675675
676+ trace ("relayout" , .{});
677+
676678 display .need_relayout = false ;
677679
678680 const resized = display .root .type .panel .layout (display , & display .root );
679681 if (resized ) {
680682 if (display .on_resized .call (display , & display .root )) {
681683 _ = display .root .type .panel .layout (display , & display .root );
682684 }
685+ const child_resized = display .propagate_resize_event (& display .root );
686+ if (child_resized ) {
687+ display .need_relayout = true ;
688+ display .relayout ();
689+ }
683690 }
684691 }
685692
@@ -1538,14 +1545,16 @@ pub fn Display(comptime T: type) type {
15381545 }
15391546
15401547 /// Trigger `on_resized` events on each node in the tree.
1541- fn propagate_resize_event (self : * Self , parent : * Entity (T )) bool {
1548+ fn propagate_resize_event (self : * Self , entity : * Entity (T )) bool {
15421549 var updated = false ;
1543- if (parent .visible == .visible )
1544- updated = parent .on_resized .call (self , parent );
1550+ if (entity .visible == .visible )
1551+ updated = entity .on_resized .call (self , entity );
15451552
1546- if (parent .type == .panel ) {
1547- for (parent .type .panel .children .items ) | entity | {
1548- updated = self .propagate_resize_event (entity ) or updated ;
1553+ if (entity .type == .panel ) {
1554+ for (entity .type .panel .children .items ) | child | {
1555+ if (child .visible == .visible ) {
1556+ updated = self .propagate_resize_event (child ) or updated ;
1557+ }
15491558 }
15501559 }
15511560
0 commit comments