[REBOL] Re: Modal behaviour for a face (or modal face)
From: g:santilli:tiscalinet:it at: 13-Mar-2002 11:27
Hi Etienne,
On Tuesday, March 12, 2002, 7:12:15 PM, you wrote:
EA> What I want is : a modal behaviour for a face; all events in this face
EA> are grabbed by itself and dispatched toward its sub-faces. All events
EA> outside this face are ignored.
It should be sufficient to modify:
>> print mold get in system/view 'wake-event
func [port /local event no-btn][
event: pick port 1
if none? event [
if debug [print "Event port awoke, but no event was present."]
return false
]
either not pop-face [
do event
empty? screen-face/pane
] [
either any [pop-face = event/face within? event/offset win-offset? pop-face pop-face/size]
[
no-btn: false
if block? get in pop-face 'pane [
no-btn: foreach item pop-face/pane [if get in item 'action [break/return false] true]
]
if any [all [event/type = 'up no-btn] event/type = 'close] [hide-popup]
do event
] [
if pop-face/action [
if not find [move time] event/type [hide-popup]
do event
]
]
none? find pop-list pop-face
]
]
(Notice that if you create a new one instead of patching it, you
should install it in system/ports/wait-list/1/awake.)
Regards,
Gabriele.
--
Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer
Amigan -- AGI L'Aquila -- REB: http://web.tiscali.it/rebol/index.r