diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 9c63726b48..ce598e3bef 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,4 +1,3 @@ -- finish scrollbars - fix up the min thumb size hack + ui: diff --git a/library/ui/gadgets.factor b/library/ui/gadgets.factor index 406695d35d..a67175f105 100644 --- a/library/ui/gadgets.factor +++ b/library/ui/gadgets.factor @@ -60,27 +60,14 @@ DEFER: add-invalid [ gadget-parent [ relayout ] when* ] ifte ] ifte ; -: (relayout-down) - dup invalidate gadget-children [ (relayout-down) ] each ; - : relayout-down ( gadget -- ) #! Relayout a gadget and its children. - dup add-invalid (relayout-down) ; + dup add-invalid invalidate ; : set-gadget-dim ( dim gadget -- ) 2dup rect-dim = [ 2drop ] [ [ set-rect-dim ] keep relayout-down ] ifte ; -GENERIC: pref-dim ( gadget -- dim ) - -M: gadget pref-dim rect-dim ; - -GENERIC: layout* ( gadget -- ) - -: prefer ( gadget -- ) dup pref-dim swap set-gadget-dim ; - -M: gadget layout* drop ; - GENERIC: user-input* ( ch gadget -- ? ) M: gadget user-input* 2drop t ; diff --git a/library/ui/layouts.factor b/library/ui/layouts.factor index 596e81c648..f1ac6bb797 100644 --- a/library/ui/layouts.factor +++ b/library/ui/layouts.factor @@ -4,6 +4,16 @@ IN: gadgets-layouts USING: errors gadgets generic hashtables kernel lists math matrices namespaces sdl sequences ; +GENERIC: pref-dim ( gadget -- dim ) + +M: gadget pref-dim rect-dim ; + +GENERIC: layout* ( gadget -- ) + +M: gadget layout* drop ; + +: prefer ( gadget -- ) dup pref-dim swap set-gadget-dim ; + : layout ( gadget -- ) #! Set the gadget's width and height to its preferred width #! and height. The gadget's children are laid out first.