32 lines
827 B
Factor
32 lines
827 B
Factor
! Copyright (C) 2005, 2009 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: accessors kernel namespaces ui.gadgets ui.gadgets.worlds
|
|
ui.gestures ;
|
|
IN: ui.gadgets.glass
|
|
|
|
GENERIC: hide-glass-hook ( gadget -- )
|
|
|
|
M: gadget hide-glass-hook drop ;
|
|
|
|
TUPLE: glass < gadget ;
|
|
|
|
: <glass> ( child loc -- glass )
|
|
>>loc glass new-gadget swap add-gadget ;
|
|
|
|
M: glass layout* gadget-child prefer ;
|
|
|
|
M: glass ungraft* gadget-child hide-glass-hook ;
|
|
|
|
: hide-glass ( world -- )
|
|
[ [ unparent ] when* f ] change-glass drop ;
|
|
|
|
: show-glass ( world child loc -- )
|
|
<glass>
|
|
[ [ hide-glass ] [ hand-clicked set-global ] bi* ]
|
|
[ [ add-gadget ] [ >>glass ] bi drop ]
|
|
2bi ;
|
|
|
|
\ glass H{
|
|
{ T{ button-down } [ find-world [ hide-glass ] when* ] }
|
|
{ T{ drag } [ update-clicked drop ] }
|
|
} set-gestures |