Glass panes can now be stacked
parent
f6f9b0874e
commit
d6a2f9b84b
|
@ -2,7 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors kernel namespaces ui.gadgets ui.gadgets.worlds
|
USING: accessors kernel namespaces ui.gadgets ui.gadgets.worlds
|
||||||
ui.gadgets.wrappers ui.gestures math.rectangles
|
ui.gadgets.wrappers ui.gestures math.rectangles
|
||||||
math.rectangles.positioning combinators ;
|
math.rectangles.positioning combinators vectors ;
|
||||||
IN: ui.gadgets.glass
|
IN: ui.gadgets.glass
|
||||||
|
|
||||||
GENERIC: hide-glass-hook ( gadget -- )
|
GENERIC: hide-glass-hook ( gadget -- )
|
||||||
|
@ -32,16 +32,15 @@ M: glass layout*
|
||||||
|
|
||||||
M: glass ungraft* gadget-child hide-glass-hook ;
|
M: glass ungraft* gadget-child hide-glass-hook ;
|
||||||
|
|
||||||
: (hide-glass) ( gadget -- )
|
|
||||||
[ [ unparent ] when* f ] change-glass drop ;
|
|
||||||
|
|
||||||
: add-glass ( glass world -- )
|
: add-glass ( glass world -- )
|
||||||
dup (hide-glass) swap [ add-gadget ] [ >>glass ] bi drop ;
|
[ swap add-gadget drop ] [ [ ?push ] change-layers drop ] 2bi ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: hide-glass ( child -- )
|
: hide-glass ( child -- )
|
||||||
find-world [ [ (hide-glass) ] [ request-focus ] bi ] when* ;
|
[ glass? ] find-parent
|
||||||
|
[ dup find-world [ unparent ] dip request-focus ]
|
||||||
|
when* ;
|
||||||
|
|
||||||
: show-glass ( owner child visible-rect -- )
|
: show-glass ( owner child visible-rect -- )
|
||||||
<glass>
|
<glass>
|
||||||
|
|
|
@ -9,7 +9,7 @@ IN: ui.gadgets.worlds
|
||||||
|
|
||||||
TUPLE: world < track
|
TUPLE: world < track
|
||||||
active? focused?
|
active? focused?
|
||||||
glass
|
layers
|
||||||
title status
|
title status
|
||||||
text-handle handle images
|
text-handle handle images
|
||||||
window-loc ;
|
window-loc ;
|
||||||
|
@ -53,16 +53,20 @@ M: world request-focus-on ( child gadget -- )
|
||||||
: <world> ( gadget title status -- world )
|
: <world> ( gadget title status -- world )
|
||||||
world new-world ;
|
world new-world ;
|
||||||
|
|
||||||
|
: as-big-as-possible ( world gadget -- )
|
||||||
|
dup [ { 0 0 } >>loc over dim>> >>dim ] when 2drop ; inline
|
||||||
|
|
||||||
M: world layout*
|
M: world layout*
|
||||||
dup call-next-method
|
[ call-next-method ]
|
||||||
dup glass>> dup [ swap dim>> >>dim drop ] [ 2drop ] if ;
|
[ dup layers>> [ as-big-as-possible ] with each ] bi ;
|
||||||
|
|
||||||
M: world focusable-child* gadget-child ;
|
M: world focusable-child* gadget-child ;
|
||||||
|
|
||||||
M: world children-on nip children>> ;
|
M: world children-on nip children>> ;
|
||||||
|
|
||||||
M: world remove-gadget
|
M: world remove-gadget
|
||||||
2dup glass>> eq? [ 2drop ] [ call-next-method ] if ;
|
2dup layers>> memq?
|
||||||
|
[ layers>> delq ] [ call-next-method ] if ;
|
||||||
|
|
||||||
: (draw-world) ( world -- )
|
: (draw-world) ( world -- )
|
||||||
dup handle>> [
|
dup handle>> [
|
||||||
|
|
Loading…
Reference in New Issue