[Laszlo-dev] RE: Idle callbacks are the devil's tools!

Max Carlson max at laszlosystems.com
Thu Jun 9 14:04:12 PDT 2005


This seems like a bad idea to me.  I've had a lot of cases where I 
wanted to bind a method to an event, invoke it by name directly.

Another thing that would be nice is if onevent could take a list, 
allowing a single method could bind to multiple events.  One case where 
I've wanted this is when I want a drawview to redraw when its height or 
width are changed.  As of now, I have to have the event bindings invoke 
a third method.

-Max

Oliver Steele wrote:
> I think Tucker had a proposal to do away with the distinction between  
> event= and name=, and to instead specify that any method whose name  
> begins with 'on' is automatically registered as an event handler for  
> that event.
> 
> On Jun 8, 2005, at 2:30 AM, Max Carlson wrote:
> 
>> I've been stumped over this very mistake a number of times.  It  would 
>> be nice if the compiler warned for events that don't begin  with 
>> 'on'.  I've filed a feature request at http:// 
>> www.openlaszlo.org/jira/browse/LPP-401
>>
>> -Max
>>
>> Don Hopkins wrote:
>>
>>> Sarah spotted the mistake I made in the following test. I was using
>>> event="foobar" instead of name="foobar". It works correctly when I  use
>>> name="foobar", since delegates call names, not events.     -Don
>>> -----Original Message-----
>>> From: Don Hopkins [mailto:dhopkins at DonHopkins.com] Sent: Tuesday,  
>>> June 07, 2005 5:15 PM
>>> To: 'OpenLaszlo development development'
>>> Cc: 'Don Hopkins'
>>> Subject: Idle callbacks are the devil's tools!
>>> Am I doing this wrong, or is there a bug in LzIdle.callOnIdle?  When 
>>> you run the following code (enclosed), the foobar method doesn't
>>> get called. The documentation for callOnIdle is worded strangely.  It 
>>> says:
>>> LzIdle.callOnIdle(d) Calls the given delegate at the next idle  
>>> event. This can be used for a
>>> non- recursive callback.
>>> Shouldn't that be "non-repeating"? (I don't think "recursive" is the
>>> right word to describe a repeating callback.) The documentation  should
>>> be explicit about the fact that the delegate is called only once, and
>>> then unregistered. (And the behavior of the code should match the
>>> documentation! ;-) To work around this problem, I'm just  registering 
>>> an LzIdle.onidle
>>> callback, and unregistering it when it happens. I want to defer some
>>> layout processing until after all replication has happened. But
>>> unfortunately the replication seems to be happening via onidle
>>> processing too, so we're both waiting in the same line, and it  calls my
>>> lazy layout callback before all the replication is finished. Is  
>>> there a way to register a lower priority onidle callback that will
>>> only run once all the pending replication and instantiation is  
>>> finished?
>>> I'd like for my idle callback to go to the end of the line each time
>>> something changes. If I unregister and reregister my onidle  callback 
>>> (instead of checking
>>> to see if I'm already registered and not doing anything in that case,
>>> keeping my place in line) will my delegate go to the end of the line
>>> behind any pending replication callbacks? But that would require more
>>> processing, so I'd prefer a lazier way to be lazy. I am  considering 
>>> using a timer instead, but that would introduce an
>>> unnecessary delay, and it still might fire too early. It would be  
>>> nice to have a reallyidle event that gets fired when the
>>> idle queue is empty.     -Don
>>> <canvas
>>>   width="100%" height="100%">
>>>   <attribute name="del" value="null"/>
>>>   <method event="oninit"><![CDATA[
>>>       this.del = new LzDelegate(this, 'foobar');
>>>       Debug.write("calling LzIdle.callOnIdle", this.del);
>>>       LzIdle.callOnIdle(this.del);
>>>     ]]>
>>>   </method>
>>>   <method event="foobar" args="args"><![CDATA[
>>>       Debug.write("foobar should be called, but isn't...", args,
>>> this.del);
>>>     ]]>
>>>   </method>
>>> </canvas>
>>> _______________________________________________
>>> Laszlo-dev mailing list
>>> Laszlo-dev at openlaszlo.org
>>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>>>
>>
>> _______________________________________________
>> Laszlo-dev mailing list
>> Laszlo-dev at openlaszlo.org
>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>>
> 
> 



More information about the Laszlo-dev mailing list