Remove track-remove, and make ui.gadgets:unparent extensible; add a test
parent
cdbad1e0b2
commit
038b4c597c
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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 ;
|
||||||
|
|
Loading…
Reference in New Issue