Remove track-remove, and make ui.gadgets:unparent extensible; add a test
parent
cdbad1e0b2
commit
038b4c597c
|
@ -293,22 +293,22 @@ PRIVATE>
|
|||
in-layout? get
|
||||
[ "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 -- )
|
||||
not-in-layout
|
||||
[
|
||||
dup parent>> dup [
|
||||
over (unparent)
|
||||
[ unfocus-gadget ] 2keep
|
||||
[ children>> delete ] keep
|
||||
relayout
|
||||
] [
|
||||
2drop
|
||||
] if
|
||||
] when* ;
|
||||
[ dup parent>> dup [ remove-gadget ] [ 2drop ] if ] when* ;
|
||||
|
||||
: clear-gadget ( gadget -- )
|
||||
not-in-layout
|
||||
dup (clear-gadget) relayout ;
|
||||
[ (clear-gadget) ] [ relayout ] bi ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
USING: kernel ui.gadgets ui.gadgets.tracks tools.test
|
||||
math.rectangles accessors sequences ;
|
||||
math.rectangles accessors sequences namespaces ;
|
||||
IN: ui.gadgets.tracks.tests
|
||||
|
||||
[ { 100 100 } ] [
|
||||
|
@ -49,14 +49,25 @@ IN: ui.gadgets.tracks.tests
|
|||
[ layout ] [ children>> [ dim>> ] map ] bi
|
||||
] unit-test
|
||||
|
||||
[ V{ { 10 10 } { 10 35 } { 10 10 } { 10 35 } { 10 10 } } ] [
|
||||
[ ] [
|
||||
vertical <track>
|
||||
0 >>fill
|
||||
<gadget> { 10 10 } >>dim f track-add
|
||||
<gadget> { 10 10 } >>dim 1/2 track-add
|
||||
<gadget> { 10 10 } >>dim f track-add
|
||||
<gadget> { 10 10 } >>dim dup "g1" set 1/2 track-add
|
||||
<gadget> { 10 10 } >>dim dup "g2" set f track-add
|
||||
<gadget> { 10 10 } >>dim 1/2 track-add
|
||||
<gadget> { 10 10 } >>dim f track-add
|
||||
{ 10 100 } >>dim
|
||||
[ layout ] [ children>> [ dim>> ] map ] bi
|
||||
] unit-test
|
||||
"track" set
|
||||
] 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
|
|
@ -60,12 +60,7 @@ PRIVATE>
|
|||
: track-add ( track gadget constraint -- track )
|
||||
pick sizes>> push add-gadget ;
|
||||
|
||||
: track-remove ( track gadget -- track )
|
||||
[ drop ] [
|
||||
[ swap children>> index ]
|
||||
[ drop sizes>> ]
|
||||
[ nip unparent ]
|
||||
2tri delete-nth
|
||||
] 2bi ;
|
||||
M: track remove-gadget
|
||||
[ [ children>> index ] keep sizes>> delete-nth ] [ call-next-method ] 2bi ;
|
||||
|
||||
: clear-track ( track -- ) [ sizes>> delete-all ] [ clear-gadget ] bi ;
|
||||
|
|
Loading…
Reference in New Issue