diff --git a/library/ui/layouts.factor b/library/ui/layouts.factor index daf7e91c5c..03efd8016d 100644 --- a/library/ui/layouts.factor +++ b/library/ui/layouts.factor @@ -26,15 +26,6 @@ GENERIC: orientation : pref-dims ( gadget -- list ) gadget-children [ pref-dim ] map ; -: packed-pref-dim ( gadget -- dim ) - #! The preferred size of the gadget, if all children are - #! packed in the direction of the given axis. - [ - pref-dims - [ { 0 0 0 } [ vmax ] reduce ] keep - { 0 0 0 } [ v+ ] reduce - ] keep orientation set-axis ; - : orient ( gadget list1 list2 -- list ) zip >r orientation r> [ uncons rot set-axis ] map-with ; @@ -91,12 +82,16 @@ M: pack filling pack-fill ; M: pack alignment pack-align ; -M: pack pref-dim packed-pref-dim ; +M: pack pref-dim ( pack -- dim ) + [ + pref-dims + [ { 0 0 0 } [ vmax ] reduce ] keep + { 0 0 0 } [ v+ ] reduce + ] keep orientation set-axis ; M: pack layout* ( pack -- ) dup pref-dims packed-layout ; : ( list -- gadget ) #! A stack lays out all its children on top of each other. - 0 1 { 0 0 1 } - swap [ over add-gadget ] each ; + 0 1 { 0 0 1 } swap [ over add-gadget ] each ; diff --git a/library/ui/splitters.factor b/library/ui/splitters.factor index 801d162d3f..1785369ebf 100644 --- a/library/ui/splitters.factor +++ b/library/ui/splitters.factor @@ -10,14 +10,14 @@ TUPLE: divider splitter ; M: divider pref-dim drop divider-size ; -TUPLE: splitter vector split ; +TUPLE: splitter split ; : hand>split ( splitter -- n ) hand relative hand hand-click-rel v- divider-size 1/2 v*n v+ ; : divider-motion ( splitter -- ) dup hand>split - over shape-dim { 1 1 1 } vmax v/ over splitter-vector v. + over shape-dim { 1 1 1 } vmax v/ over orientation v. 0 max 1 min over set-splitter-split relayout ; : divider-actions ( thumb -- ) @@ -31,8 +31,7 @@ C: divider ( -- divider ) dup divider-actions ; C: splitter ( first second vector -- splitter ) - over set-delegate - [ set-splitter-vector ] keep + [ >r 0 1 rot r> set-delegate ] keep swapd [ add-gadget ] keep over add-gadget @@ -43,14 +42,6 @@ C: splitter ( first second vector -- splitter ) : { 1 0 0 } ; -M: splitter orientation splitter-vector ; - -M: splitter filling drop 1 ; - -M: splitter alignment drop 0 ; - -M: splitter pref-dim packed-pref-dim ; - : splitter-part ( splitter -- vec ) dup splitter-split swap shape-dim n*v divider-size 1/2 v*n v- ;