]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.gadgets.incremental: make sure to unfocus and (unparent)
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 22 Jan 2022 19:19:36 +0000 (11:19 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 22 Jan 2022 19:19:36 +0000 (11:19 -0800)
basis/ui/gadgets/incremental/incremental.factor

index 513fb0330dbfd4af9aaa2b9548f6fde438e69cc5..aba3d25f6e7e74770b98d8de2619a0ebaebf69dd 100644 (file)
@@ -39,11 +39,14 @@ M: incremental dim-changed drop ;
     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 -- )