Compose model fires less unnecessary notifications

db4
Slava Pestov 2008-12-18 23:56:16 -06:00
parent 085184661e
commit 766fccaecc
2 changed files with 25 additions and 2 deletions

View File

@ -1,5 +1,5 @@
USING: arrays generic kernel math models namespaces sequences assocs
tools.test models.compose accessors ;
tools.test models.compose accessors locals ;
IN: models.compose.tests
! Test compose
@ -22,3 +22,25 @@ IN: models.compose.tests
[ { 4 5 } ] [ "c" get value>> ] unit-test
[ ] [ "c" get deactivate-model ] unit-test
TUPLE: an-observer { i integer } ;
M: an-observer model-changed nip [ 1+ ] change-i drop ;
[ 1 0 ] [
[let* | m1 [ 1 <model> ]
m2 [ 2 <model> ]
c [ { m1 m2 } <compose> ]
o1 [ an-observer new ]
o2 [ an-observer new ] |
o1 m1 add-connection
o2 m2 add-connection
c activate-model
"OH HAI" m1 set-model
o1 i>>
o2 i>>
]
] unit-test

View File

@ -18,7 +18,8 @@ TUPLE: compose < model ;
M: compose model-changed
nip
[ [ value>> ] composed-value ] keep set-model ;
dup [ value>> ] composed-value >>value
notify-connections ;
M: compose model-activated dup model-changed ;