Remove track-remove, and make ui.gadgets:unparent extensible; add a test

db4
Slava Pestov 2009-02-18 17:32:46 -06:00
parent cdbad1e0b2
commit 038b4c597c
3 changed files with 30 additions and 24 deletions

View File

@ -293,22 +293,22 @@ PRIVATE>
in-layout? get in-layout? get
[ "Cannot add/remove gadgets in layout*" throw ] when ; [ "Cannot add/remove gadgets in layout*" throw ] when ;
GENERIC: remove-gadget ( gadget parent -- )
M: gadget remove-gadget
over (unparent)
[ unfocus-gadget ]
[ children>> delete ]
[ nip relayout ]
2tri ;
: unparent ( gadget -- ) : unparent ( gadget -- )
not-in-layout not-in-layout
[ [ dup parent>> dup [ remove-gadget ] [ 2drop ] if ] when* ;
dup parent>> dup [
over (unparent)
[ unfocus-gadget ] 2keep
[ children>> delete ] keep
relayout
] [
2drop
] if
] when* ;
: clear-gadget ( gadget -- ) : clear-gadget ( gadget -- )
not-in-layout not-in-layout
dup (clear-gadget) relayout ; [ (clear-gadget) ] [ relayout ] bi ;
<PRIVATE <PRIVATE

View File

@ -1,5 +1,5 @@
USING: kernel ui.gadgets ui.gadgets.tracks tools.test USING: kernel ui.gadgets ui.gadgets.tracks tools.test
math.rectangles accessors sequences ; math.rectangles accessors sequences namespaces ;
IN: ui.gadgets.tracks.tests IN: ui.gadgets.tracks.tests
[ { 100 100 } ] [ [ { 100 100 } ] [
@ -49,14 +49,25 @@ IN: ui.gadgets.tracks.tests
[ layout ] [ children>> [ dim>> ] map ] bi [ layout ] [ children>> [ dim>> ] map ] bi
] unit-test ] unit-test
[ V{ { 10 10 } { 10 35 } { 10 10 } { 10 35 } { 10 10 } } ] [ [ ] [
vertical <track> vertical <track>
0 >>fill 0 >>fill
<gadget> { 10 10 } >>dim f track-add <gadget> { 10 10 } >>dim f track-add
<gadget> { 10 10 } >>dim 1/2 track-add <gadget> { 10 10 } >>dim dup "g1" set 1/2 track-add
<gadget> { 10 10 } >>dim f track-add <gadget> { 10 10 } >>dim dup "g2" set f track-add
<gadget> { 10 10 } >>dim 1/2 track-add <gadget> { 10 10 } >>dim 1/2 track-add
<gadget> { 10 10 } >>dim f track-add <gadget> { 10 10 } >>dim f track-add
{ 10 100 } >>dim { 10 100 } >>dim
[ layout ] [ children>> [ dim>> ] map ] bi "track" set
] unit-test ] unit-test
[ V{ { 10 10 } { 10 35 } { 10 10 } { 10 35 } { 10 10 } } ]
[ "track" get [ layout ] [ children>> [ dim>> ] map ] bi ] unit-test
[ V{ { 10 10 } { 10 80 } { 10 10 } } ] [
"g1" get unparent
"g2" get unparent
"track" get [ layout ] [ children>> [ dim>> ] map ] bi
] unit-test
[ 3 ] [ "track" get sizes>> length ] unit-test

View File

@ -60,12 +60,7 @@ PRIVATE>
: track-add ( track gadget constraint -- track ) : track-add ( track gadget constraint -- track )
pick sizes>> push add-gadget ; pick sizes>> push add-gadget ;
: track-remove ( track gadget -- track ) M: track remove-gadget
[ drop ] [ [ [ children>> index ] keep sizes>> delete-nth ] [ call-next-method ] 2bi ;
[ swap children>> index ]
[ drop sizes>> ]
[ nip unparent ]
2tri delete-nth
] 2bi ;
: clear-track ( track -- ) [ sizes>> delete-all ] [ clear-gadget ] bi ; : clear-track ( track -- ) [ sizes>> delete-all ] [ clear-gadget ] bi ;