From 2f025f58ae2b8796aed0f4beaf8b50e7b288a1f0 Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@slava-pestovs-macbook-pro.local> Date: Tue, 25 Nov 2008 19:20:25 -0600 Subject: [PATCH] Frames had problems with resizing --- basis/ui/gadgets/frames/frames-tests.factor | 15 +++++++++++++- basis/ui/gadgets/frames/frames.factor | 22 ++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/basis/ui/gadgets/frames/frames-tests.factor b/basis/ui/gadgets/frames/frames-tests.factor index e38e97c76c..27d511e10a 100644 --- a/basis/ui/gadgets/frames/frames-tests.factor +++ b/basis/ui/gadgets/frames/frames-tests.factor @@ -1,4 +1,17 @@ +USING: accessors kernel namespaces tools.test ui.gadgets +ui.gadgets.frames ui.gadgets.grids ui.gadgets.labels ; IN: ui.gadgets.frames.tests -USING: ui.gadgets.frames ui.gadgets tools.test ; [ ] [ <frame> layout ] unit-test + +[ t ] [ + <frame> + "Hello world" <label> @top grid-add + "Hello world" <label> @center grid-add + dup pref-dim "dim1" set + { 1000 1000 } >>dim + dup layout* + dup pref-dim "dim2" set + drop + "dim1" get "dim2" get = +] unit-test diff --git a/basis/ui/gadgets/frames/frames.factor b/basis/ui/gadgets/frames/frames.factor index b5c3736896..ae4c7d929a 100644 --- a/basis/ui/gadgets/frames/frames.factor +++ b/basis/ui/gadgets/frames/frames.factor @@ -1,15 +1,17 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays generic kernel math namespaces sequences words -splitting grouping math.vectors ui.gadgets.grids ui.gadgets -math.geometry.rect ; +USING: accessors arrays generic kernel math namespaces sequences +words splitting grouping math.vectors ui.gadgets.grids +ui.gadgets math.geometry.rect ; IN: ui.gadgets.frames -! A frame arranges gadgets in a 3x3 grid, where the center -! gadgets gets left-over space. -TUPLE: frame < grid ; +TUPLE: glue < gadget ; -: <frame-grid> ( -- grid ) 9 [ <gadget> ] replicate 3 group ; +M: glue pref-dim* drop { 0 0 } ; + +: <glue> ( -- glue ) glue new-gadget ; + +: <frame-grid> ( -- grid ) 9 [ <glue> ] replicate 3 group ; : @center 1 1 ; inline : @left 0 1 ; inline @@ -22,13 +24,15 @@ TUPLE: frame < grid ; : @bottom-left 0 2 ; inline : @bottom-right 2 2 ; inline +TUPLE: frame < grid ; + : new-frame ( class -- frame ) <frame-grid> swap new-grid ; inline : <frame> ( -- frame ) frame new-frame ; -: (fill-center) ( n vec -- ) +: (fill-center) ( dim vec -- ) [ [ first ] [ third ] bi v+ [v-] ] keep set-second ; : fill-center ( dim horiz vert -- ) @@ -36,4 +40,4 @@ TUPLE: frame < grid ; M: frame layout* dup compute-grid - [ [ rect-dim ] 2dip fill-center ] [ grid-layout ] 3bi ; + [ [ dim>> ] 2dip fill-center ] [ grid-layout ] 3bi ;