factor/core/ui/gadgets/menus.factor

36 lines
958 B
Factor
Raw Normal View History

2006-10-07 02:17:32 -04:00
! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: gadgets
2006-10-22 18:46:02 -04:00
USING: arrays errors freetype gadgets generic hashtables
2006-10-07 02:17:32 -04:00
kernel math models namespaces opengl sequences ;
: menu-loc ( world menu -- loc )
>r rect-dim r> pref-dim [v-] hand-loc get-global vmin ;
TUPLE: menu-glass ;
C: menu-glass ( menu world -- glass )
dup delegate>gadget
>r over menu-loc over set-rect-loc r>
[ add-gadget ] keep ;
M: menu-glass layout* gadget-child prefer ;
: hide-glass ( world -- )
dup world-glass [ unparent ] when*
f swap set-world-glass ;
2006-10-07 02:17:32 -04:00
: show-glass ( gadget world -- )
over hand-clicked set-global
[ hide-glass ] keep
[ add-gadget ] 2keep
set-world-glass ;
2006-10-07 02:17:32 -04:00
: show-menu ( gadget owner -- )
2006-10-23 23:54:08 -04:00
find-world [ <menu-glass> ] keep show-glass ;
\ menu-glass H{
{ T{ button-down } [ find-world [ hide-glass ] when* ] }
{ T{ drag } [ update-clicked drop ] }
} set-gestures