On Oct 31, 2006, at 3:07 PM, P T Withington wrote:
So, thinking about this, 1490 is basically asking for the 'target'
to be passed. In DOM1 the target is 'this' because adding a
handler adds it as a method on the event sender. That clearly
can't work for us, because 99% of our handlers are methods on
another object. In DOM2, what a handler gets is an event
descriptor object, with lots of properties. Always at least the
target and some other stuff depending on the type of the event. I
am wrestling with whether it is more important to pass multiple-
values to a handler or to pass more information about the event.
I had to make this choice in a couple of projects in the past, and
was always glad in the end to have chosen an event descriptor. There
are a number of ways this can be useful:
- as you mention, it is a clean way of passing complex information
around as part of custom events
- event handlers can piggyback information on the event for use by
handlers further up the event chain
- the kernel/LFC can add cheaply-computed secondary information (such
as whether a click is part of a multi-click) to the event.
- it makes it *possible* to pass through extra pointer info (button
number, pressure/angle for tablets) when available without going
through painful acrobatics
It's just a really clean mechanism that works well.
It seems a shame to have to cons up an event descriptor if most
handlers don't need it.
I think it's worth it. Plus, in DHTML we could potentially just pass
through the HTML event descriptor to save a cons.
It also seems a shame to have to burden all event processing with
the overhead of apply, just so one or two handlers can be passed
multiple arguments.
Should we just add the target as the second argument to handlers
for those who need it, and make handlers that need multiple
arguments use an object?
We could be _very_ clever and look at the number of arguments the
handler expects and create an DOM2-like event object only if the
handler expects a second argument.
I kind of like that, but doing that check on every handler in the
chain might be expensive...
Thoughts?
On 2006-10-25, at 11:57 EDT, Jim Grandy wrote:
Just noting we have bugs in JIRA on this theme:
http://www.openlaszlo.org/jira/browse/LPP-1490
http://www.openlaszlo.org/jira/browse/LPP-383
Elliot says:
LPP-1490 is much more useful and the last work-around that I did
for mouse
track events was really hacky and didn't work 100% of the time. I
created an
invisible view that listened for all mouse events, set a globally
accessible
var with the currently moused-over view, and then dispatched the
event to the
correct view underneath.
On Oct 23, 2006, at 2:30 PM, Adam Wolff wrote:
If we do this, can we also make it variadic so that delegates get
called
back with/can pass more than one argument.
A
On Oct 23, P T Withington wrote:
What do people think about changing the idiom:
<event>.sendEvent(<value>);
to:
sendEvent(<event>, <value>);
?
This would make it easier to detect errors (trying to send an
event to a
non-existent event) and to optimize (to not bother if there are
no listenters
for the event).
Comments?