From 22c071778aa58e7e98d34ddd03f865dd7abe48a9 Mon Sep 17 00:00:00 2001 From: Sam Anklesaria <sam@Tintin.local> Date: Sun, 24 May 2009 10:05:17 -0500 Subject: [PATCH] |-products work correctly --- extra/ui/frp/signals/signals.factor | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extra/ui/frp/signals/signals.factor b/extra/ui/frp/signals/signals.factor index 461b8f0732..184dd05365 100644 --- a/extra/ui/frp/signals/signals.factor +++ b/extra/ui/frp/signals/signals.factor @@ -66,16 +66,18 @@ M: action (model-changed) [ [ value>> ] [ quot>> ] bi* call( a -- b ) ] keep val TUPLE: | < multi-model ; : <|> ( models -- product ) | <multi-model> ; +GENERIC: models-changed ( product -- ) +M: | models-changed drop ; M: | model-changed nip dup dependencies>> [ value>> ] all? - [ dup [ value>> ] product-value >>value notify-connections - ] [ drop ] if ; + [ [ dup [ value>> ] product-value >>value notify-connections ] keep models-changed ] + [ drop ] if ; M: | update-model dup value>> swap [ set-model ] set-product-value ; M: | model-activated dup model-changed ; +! Only when everything's true does he make it false TUPLE: & < | ; : <&> ( models -- product ) & <multi-model> ; -M: & model-changed [ call-next-method ] keep - [ dependencies>> [ f swap set-model ] each ] with-locked-model ; \ No newline at end of file +M: & models-changed dependencies>> [ f swap (>>value) ] each ; \ No newline at end of file