1 type Panel @abstract @mut = 2 inherit Container 3 4 val items @dst = obs/List<Control>.new 5 items.bind { _ item -> item.origin = global_position } {} |> push_token 6 7 def Container.get_slice = items.as_safe_slice 8 9 do 10 let f (item : Control) = 11 assert item.parent.is_none 12 item.parent = self 13 14 for item in items do 15 f item 16 17 items.subscribe 18 { _ item -> f item } 19 { _ item -> assert item.parent.unwrap == self 20 item.parent = None } 21 |> push_token 22