]> gitweb.factorcode.org Git - factor.git/commitdiff
frame layout fixes
authorSlava Pestov <slava@factorcode.org>
Fri, 26 Aug 2005 00:28:56 +0000 (00:28 +0000)
committerSlava Pestov <slava@factorcode.org>
Fri, 26 Aug 2005 00:28:56 +0000 (00:28 +0000)
TODO.FACTOR.txt
library/ui/frames.factor

index 8d891ad79e3ae143f143727771e5c343211219a7..b42562bf6d8f2c5c8183bca986237927470fa74d 100644 (file)
@@ -15,7 +15,6 @@
 - gaps in pack layout\r
 - find out why so many small bignums get consed\r
 - faster mouse tracking\r
-- rewrite frame layout for new style\r
 - an interior paint that is only painted on rollover and mouse press;\r
   use it for menu items. give menus a gradient background\r
 - scroll bar: more intuitive behavior when clicking inside the elevator\r
index 12b0386292095b14ec0193478b65a7fcc177ec1f..640ce439ea74699d486bd3606c2cb3bf592847be 100644 (file)
@@ -44,7 +44,9 @@ M: frame pref-dim ( frame -- dim )
     [ swap [ swap 0 3vector ] map-with ] map-with ;
 
 : do-grid ( dim-grid gadget-grid quot -- )
-    -rot [ [ pick call ] 2each ] 2each drop ;
+    -rot [
+        [ dup [ pick call ] [ 2drop ] ifte ] 2each
+    ] 2each drop ; inline
 
 : position-grid ( gadgets horiz vert -- )
     >r 0 [ + ] accumulate r> 0 [ + ] accumulate
@@ -53,8 +55,16 @@ M: frame pref-dim ( frame -- dim )
 : resize-grid ( gadgets horiz vert -- )
     frame-layout swap [ set-gadget-dim ] do-grid ;
 
+: (fill-center) ( vec n -- )
+    over first pick third + - 0 max 1 rot set-nth ;
+
+: fill-center ( horiz vert dim -- )
+    tuck second (fill-center) first (fill-center) ;
+
 M: frame layout* ( frame -- dim )
-    frame-grid dup pref-dim-grid
-    dup reduce-grid [ first ] map
-    swap flip reduce-grid [ second ] map
-    3dup position-grid resize-grid ;
+    [
+        frame-grid dup pref-dim-grid
+        dup reduce-grid [ first ] map
+        swap flip reduce-grid [ second ] map
+        2dup
+    ] keep rect-dim fill-center 3dup position-grid resize-grid ;