dup children>> length 200,000 > [
! We let the length oscillate between 100k-200k, so we don't
! have to relayout the container every time a gadget is added.
- [ 100,000 short cut* ] change-children relayout yield
+ [ 100,000 short cut* ] change-children
- ! Then we ungraft the scrolled of gadgets. Yield every 10k
- ! gadget so to not overflow the ungraft queue.
- 10 <groups> [ [ ungraft ] each yield ] each
+ ! Unfocus if any focused gadgets were removed and relayout
+ dup focus>> pick member-eq? [ f >>focus ] when relayout yield
+
+ ! Then we finish unparenting the scrolled of gadgets. Yield
+ ! every 10k gadget so to not overflow the ungraft queue.
+ 10 <groups> [ [ (unparent) ] each yield ] each
] [ drop ] if ;
: add-incremental ( gadget incremental -- )