Fix scrollers

db4
Slava Pestov 2008-07-11 15:19:54 -05:00
parent c4cab0678a
commit b0f8680438
2 changed files with 14 additions and 12 deletions

View File

@ -1,8 +1,8 @@
IN: ui.gadgets.tests IN: ui.gadgets.tests
USING: ui.gadgets ui.gadgets.packs ui.gadgets.worlds tools.test USING: accessors ui.gadgets ui.gadgets.packs ui.gadgets.worlds
namespaces models kernel dlists dequeues math sets tools.test namespaces models kernel dlists dequeues math sets
math.parser ui sequences hashtables assocs io arrays math.parser ui sequences hashtables assocs io arrays prettyprint
prettyprint io.streams.string ; io.streams.string ;
[ T{ rect f { 10 10 } { 20 20 } } ] [ T{ rect f { 10 10 } { 20 20 } } ]
[ [

View File

@ -76,7 +76,7 @@ scroller H{
] keep dup scroller-value rot v+ swap scroll ; ] keep dup scroller-value rot v+ swap scroll ;
: relative-scroll-rect ( rect gadget scroller -- newrect ) : 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 ) : find-scroller* ( gadget -- scroller )
dup find-scroller dup [ dup find-scroller dup [
@ -119,13 +119,15 @@ scroller H{
: scroll>top ( gadget -- ) : scroll>top ( gadget -- )
<zero-rect> swap scroll>rect ; <zero-rect> swap scroll>rect ;
: update-scroller ( scroller follows -- ) GENERIC: update-scroller ( scroller follows -- )
{
{ [ dup t eq? ] [ drop (scroll>bottom) ] } M: t update-scroller drop (scroll>bottom) ;
{ [ dup rect? ] [ swap (scroll>rect) ] }
{ [ dup ] [ swap (scroll>gadget) ] } M: gadget update-scroller swap (scroll>gadget) ;
[ drop dup scroller-value swap scroll ]
} cond ; M: rect update-scroller swap (scroll>rect) ;
M: f update-scroller drop dup scroller-value swap scroll ;
M: scroller layout* M: scroller layout*
dup call-next-method dup call-next-method