DunbarX wrote:
A char typed into a field is actually written via a "keyDown" message reaching the engine. It doesn't just appear there via some other mechanism. At least that is what I believed. How it gets there is a matter of choice. This all seems like what I would consider "normal handling".

So I just wanted to know why I could not send that message explicitly, by hand. You can in HC, and I wondered why you could not in Rev. Why would it not continue along, like all other messages:

on sendBeep
   send "beep" && 3 to this stack
end sendBeep

This works fine. What is the thing about keyDown? In other words, what is the difference, trying to understand the way things work. If your point is that the message is stopped for some reason if I intercept it and send it rather than passing it to the engine, then I am really confused.

I am with Richard in thinking it is some sort of bug.

Please review my post:
<http://lists.runrev.com/pipermail/use-revolution/2009-October/129600.html>

I also summarized it here:
<http://lists.runrev.com/pipermail/use-revolution/2009-October/129641.html>

The possible bug I noted was the difference between dispatch and send. Specifically, you can "dispatch" a message to a stack and it works well, but if you "send" the same message to the same stack the engine will complain with an error.

And IMPORTANT POINT apparently missed each of the times I've written it is that there does not appear to be a bug with "dispatch".

In brief:

- IF you want normal engine handling,
  THEN don't do anything and let the engine handle it

- IF you want custom handling up front and then want to the engine
  to handle it after,
  THEN do your custom processing and then use "pass" to let the
  engine handle it

- IF you want to split your custom processing so that half is done
  in the control and half is done in the stack,
  THEN do what you want in the control and use "dispatch" (or, when
  it's fixed, "send") to call the handler in the stack

But please keep this in mind: the engine is not a stack, nor a stack the engine. I don't know what sort of ambiguity the HC team may have had for things like this, but in Rev "stack" and "engine" are not synonymous; rather very different things, and you would only send a message to a stack if it was indeed the stack that you wanted to handle it. If instead you want the engine to handle it, just use "pass" and it'll find it's way to the engine as you would expect and as the many examples already posted in this thread have shown.

Perhaps HC allowed you to send message to any arbitrary point in the message path beyond the current script regardless whether or not there's a handler for it there as a more verbose alternative to "pass". But as I explained in detail earlier there are reasons why Rev doesn't work the same way with messages, and instead requires that you use the method which is simpler and faster in both xtalks, "pass <messageName>".

Learning Rev isn't the hard part. It's unlearning the ambiguousness of HC that's hard. ;)

--
 Richard Gaskin
 Fourth World
 Rev training and consulting: http://www.fourthworld.com
 Webzine for Rev developers: http://www.revjournal.com
 revJournal blog: http://revjournal.com/blog.irv
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to