]> gitweb.factorcode.org Git - factor.git/commitdiff
simplified splitter gadget
authorSlava Pestov <slava@factorcode.org>
Fri, 1 Jul 2005 23:52:08 +0000 (23:52 +0000)
committerSlava Pestov <slava@factorcode.org>
Fri, 1 Jul 2005 23:52:08 +0000 (23:52 +0000)
library/ui/layouts.factor
library/ui/splitters.factor

index daf7e91c5c0feaef852d09a01aca07978b359455..03efd8016db67d31c1bfc813e27e1b02fe015ac6 100644 (file)
@@ -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 ;
 
 : <stack> ( list -- gadget )
     #! A stack lays out all its children on top of each other.
-    0 1 { 0 0 1 } <pack>
-    swap [ over add-gadget ] each ;
+    0 1 { 0 0 1 } <pack>  swap [ over add-gadget ] each ;
index 801d162d3f8543c9ce29d4d86a7376517653d3c5..1785369ebf89a6abd38176173f81ce918e96bbe2 100644 (file)
@@ -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 )
-    <empty-gadget> over set-delegate
-    [ set-splitter-vector ] keep
+    [ >r 0 1 rot <pack> r> set-delegate ] keep
     swapd
     [ add-gadget ] keep
     <divider> over add-gadget
@@ -43,14 +42,6 @@ C: splitter ( first second vector -- splitter )
 
 : <y-splitter> { 1 0 0 } <splitter> ;
 
-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- ;