Track gadgets compute correct preferred size
parent
aa2c3eaf73
commit
357cdab15b
|
@ -32,7 +32,6 @@
|
|||
|
||||
- new browser:
|
||||
- browse generic words and classes
|
||||
- initial size sucks
|
||||
- need actions for reloading the source file and opening word in jEdit
|
||||
- toggle/radio buttons/tabs or something
|
||||
- inspector: less clutter when browsing words
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets
|
||||
USING: gadgets gadgets-labels gadgets-layouts gadgets-theme
|
||||
hashtables kernel math namespaces queues sequences threads ;
|
||||
|
|
|
@ -22,19 +22,32 @@ C: track ( orientation -- track )
|
|||
|
||||
: <y-track> { 1 0 0 } <track> ;
|
||||
|
||||
: divider-sizes ( seq -- dim )
|
||||
length 1- 0 max divider-size n*v ;
|
||||
|
||||
: track-dim ( track -- dim )
|
||||
#! Space available for content (minus dividers)
|
||||
dup rect-dim swap track-sizes length 1-
|
||||
divider-size n*v v- ;
|
||||
dup rect-dim swap track-sizes divider-sizes v- ;
|
||||
|
||||
: track-layout ( track -- sizes )
|
||||
dup track-dim swap track-sizes
|
||||
[ [ over n*v , ] [ divider-size , ] interleave ] { } make
|
||||
nip ;
|
||||
|
||||
M: track layout* ( splitter -- )
|
||||
M: track layout* ( track -- )
|
||||
dup track-layout packed-layout ;
|
||||
|
||||
: track-pref-dims ( dims sizes -- dims )
|
||||
[ [ dup zero? [ nip ] [ v/n ] if ] 2map max-dim ] keep
|
||||
divider-sizes v+ ;
|
||||
|
||||
M: track pref-dim* ( track -- dim )
|
||||
[
|
||||
dup gadget-children
|
||||
2 swap group [ first ] map pref-dims
|
||||
dup rot track-sizes track-pref-dims >r max-dim r>
|
||||
] keep gadget-orientation set-axis ;
|
||||
|
||||
: divider-delta ( track -- delta )
|
||||
#! How far the divider has moved along the track?
|
||||
drag-loc over track-dim { 1 1 1 } vmax v/
|
||||
|
|
Loading…
Reference in New Issue