1 ! Copyright (C) 2005, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel math.vectors models ui.gadgets ;
4 IN: ui.gadgets.viewports
6 TUPLE: viewport < gadget { constraint initial: { 1 1 } } ;
8 : find-viewport ( gadget -- viewport )
9 [ viewport? ] find-parent ;
11 : <viewport> ( content model -- viewport )
19 [ [ dim>> ] [ gadget-child pref-dim ] bi vmax ] bi >>dim drop ;
21 M: viewport focusable-child*
24 : scroll-position ( scroller -- loc )
25 model>> range-value v>integer ;
27 M: viewport model-changed
32 [ scroll-position vneg ]
37 : visible-dim ( gadget -- dim )
38 dup parent>> viewport? [ parent>> ] when dim>> ;