1 ! Copyright (C) 2005, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays ui.gadgets ui.gadgets.borders
4 kernel math namespaces sequences models math.vectors
6 IN: ui.gadgets.viewports
8 TUPLE: viewport < gadget { constraint initial: { 1 1 } } ;
10 : find-viewport ( gadget -- viewport )
11 [ viewport? ] find-parent ;
13 : <viewport> ( content model -- viewport )
21 [ [ dim>> ] [ gadget-child pref-dim ] bi vmax ] bi >>dim drop ;
23 M: viewport focusable-child*
26 : scroller-value ( scroller -- loc )
27 model>> range-value [ >integer ] map ;
29 M: viewport model-changed
34 [ scroller-value vneg ]
39 : visible-dim ( gadget -- dim )
40 dup parent>> viewport? [ parent>> ] when dim>> ;