Exit Repeat
Geoff Canyon
gcanyon at inspiredlogic.com
Mon Mar 20 10:34:12 EST 2006
On Mar 20, 2006, at 1:47 AM, Chipp Walters wrote:
> put the executioncontexts
Thanks, Chipp! Now we have a puzzle (I think)
I have a button with this script:
on mouseUp
set the canInterrupt of this stack to true
repeat with i = 1 to 1000
wait 0 ticks with messages
put i
end repeat
set the canInterrupt of this stack to false
end mouseUp
The stack has this script:
on escapeKey
if the canInterrupt of me then
put the executioncontexts
set the canInterrupt of me to false
exit to top
end if
end escapeKey
These are both copied from Mark Smith's example. Clicking the button
starts counting up in the message box. Pressing the escape key stops
the counting and puts this:
stack "Navigator",escapeKey,4
Note that the script of the button is not listed. I think that is
correct, because the escapeKey message was generated from the key
being pressed -- the fact that the mouseUp handler had to yield time
to let it happen is irrelevant.
The documentation says about exit to top:
Halts the current handler and all pending handlers.
I checked to be sure, and send...in messages are not terminated. The
documentation goes on to make this clearer by saying:
If the current handler was called from another handler, the
calling handler
is also halted. Other messages that depend on the same action
are also
suppressed: for example, if an exit to top control structure is
executed in
a closeCard handler, the corresponding openCard message is not
sent to the
destination card.
I _guess_ that could be construed to apply in this case, but I think
the docs should be explicit. Frankly, this behavior seems backward to
me. What does everyone (anyone) else think?
Although it is convenient in this case, it seems wrong to me that
exit to top in the escapeKey handler above also terminates the
mouseUp message.
gc
More information about the use-livecode
mailing list