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
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 } } ]
[

View File

@ -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 -- )
<zero-rect> 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