diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index c27fefd0d6..71e2e5a1b1 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -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 diff --git a/library/ui/environment.factor b/library/ui/environment.factor index 45e06ec63c..e7fb46398a 100644 --- a/library/ui/environment.factor +++ b/library/ui/environment.factor @@ -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 ; diff --git a/library/ui/tracks.factor b/library/ui/tracks.factor index d4ddb15158..39f048bb2f 100644 --- a/library/ui/tracks.factor +++ b/library/ui/tracks.factor @@ -22,19 +22,32 @@ C: track ( orientation -- track ) : { 1 0 0 } ; +: 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/