diff --git a/extra/ui/gadgets/gadgets-tests.factor b/extra/ui/gadgets/gadgets-tests.factor index ca8829a082..dbb2919277 100755 --- a/extra/ui/gadgets/gadgets-tests.factor +++ b/extra/ui/gadgets/gadgets-tests.factor @@ -1,8 +1,8 @@ IN: ui.gadgets.tests -USING: ui.gadgets ui.gadgets.packs ui.gadgets.worlds tools.test -namespaces models kernel dlists dequeues math sets -math.parser ui sequences hashtables assocs io arrays -prettyprint io.streams.string ; +USING: accessors ui.gadgets ui.gadgets.packs ui.gadgets.worlds +tools.test namespaces models kernel dlists dequeues math sets +math.parser ui sequences hashtables assocs io arrays prettyprint +io.streams.string ; [ T{ rect f { 10 10 } { 20 20 } } ] [ diff --git a/extra/ui/gadgets/scrollers/scrollers.factor b/extra/ui/gadgets/scrollers/scrollers.factor index 7276d0e05d..8cac3f4400 100755 --- a/extra/ui/gadgets/scrollers/scrollers.factor +++ b/extra/ui/gadgets/scrollers/scrollers.factor @@ -76,7 +76,7 @@ scroller H{ ] keep dup scroller-value rot v+ swap scroll ; : relative-scroll-rect ( rect gadget scroller -- newrect ) - scroller-viewport gadget-child relative-loc offset-rect ; + viewport>> gadget-child relative-loc offset-rect ; : find-scroller* ( gadget -- scroller ) dup find-scroller dup [ @@ -119,13 +119,15 @@ scroller H{ : scroll>top ( gadget -- ) swap scroll>rect ; -: update-scroller ( scroller follows -- ) - { - { [ dup t eq? ] [ drop (scroll>bottom) ] } - { [ dup rect? ] [ swap (scroll>rect) ] } - { [ dup ] [ swap (scroll>gadget) ] } - [ drop dup scroller-value swap scroll ] - } cond ; +GENERIC: update-scroller ( scroller follows -- ) + +M: t update-scroller drop (scroll>bottom) ; + +M: gadget update-scroller swap (scroll>gadget) ; + +M: rect update-scroller swap (scroll>rect) ; + +M: f update-scroller drop dup scroller-value swap scroll ; M: scroller layout* dup call-next-method