[Laszlo-dev] disabling delegates

Jim Grandy jgrandy at laszlosystems.com
Wed Apr 12 13:01:26 EDT 2006


Forgive me, but how does the compiler know in this case? This could  
only found using call chain analysis or at runtime. Statically, the  
attribute is a function -- it was declared to have a function value.  
It is only in certain runtime conditions that the attribute is reset  
to null.

On Apr 12, 2006, at 9:58 AM, P T Withington wrote:

> In debug mode, the compiler will emit a warning if you try to call  
> a non-function.
>
> On 2006-04-12, at 12:43 EDT, Jim Grandy wrote:
>
>> I haven't checked, but would the compiler really catch this  
>> technique?
>>
>> LzView.prototype.__LZcheckwidth = function () { ... }
>>
>> then later, in a separate method:
>>
>> 	this.__LZcheckwidth = null;
>>
>> And then later:
>>
>> 	__LZcheckwidth();
>>
>> We're masking out a method declared in the prototype by putting a  
>> null attribute value in front of it. But the method has been  
>> properly declared.
>>
>> jim
>>
>> On Apr 12, 2006, at 9:10 AM, P T Withington wrote:
>>
>>> I'm working on making the translator work in debug mode.  My hope  
>>> is to make these kinds of errors easier to find and fix in  
>>> dhtml.  You should already be able to do that in swf though, if  
>>> you just turn on warnings in the piece of the LFC you are working  
>>> on.  Just put
>>>
>>> {
>>>           #pragma 'warnUndefinedReferences=true'
>>>  ...
>>>
>>> }
>>>
>>> around the code you are working on.  Eventually we want to be  
>>> able to do this for the whole LFC.
>>>
>>> On 2006-04-12, at 11:45 EDT, Jim Grandy wrote:
>>>
>>>> We don't just use this technique here. In LaszloView.as, we  
>>>> clear __LZcheckwidth and __LZcheckheight to null in certain  
>>>> situations, and then call them without checking for null.
>>>>
>>>> On Apr 12, 2006, at 5:50 AM, Henry Minsky wrote:
>>>>
>>>>> OK will do.
>>>>>
>>>>>
>>>>> On 4/12/06, P T Withington <ptw at openlaszlo.org> wrote:
>>>>> This looks like a 'stupid AS trick' to me.  Don't try this at  
>>>>> home.
>>>>>
>>>>> I would just change the loop to test d.enabled, and change
>>>>> LzDelegate.disable to just set the flag and not muck with the  
>>>>> innards
>>>>> of the delegate.
>>>>>
>>>>> [This is why nullable types suck.]
>>>>>
>>>>> On 2006-04-11, at 11:50 EDT, Henry Minsky wrote:
>>>>>
>>>>> > There is a method for disabling a delegate which is currently
>>>>> > implemented as
>>>>> >
>>>>> > LzDelegate.prototype.disable = function (){
>>>>> >     if ( !this.enabled ) return;
>>>>> >     this.enabled = false;
>>>>> >     this.disc = this.c;
>>>>> >     this.c = null;
>>>>> > }
>>>>> >
>>>>> > This has the unfortunate side effect of causing an error in  
>>>>> DHTML
>>>>> > runtime if
>>>>> > you then try to call
>>>>> > this delegate, because the inner loop of LzEvent.sendEvent does
>>>>> >
>>>>> >     for (var i = dll; i >= 0; i--){
>>>>> >         d = this.delegateList[ i ];
>>>>> >         //pointer may be bad due to deletions
>>>>> >         if ( d && ! d.event_called){
>>>>> >             d.event_called = true; //this delegate has been  
>>>>> called
>>>>> >             calledDelegates.push( d );
>>>>> >             // d.execute( sd ); inlined
>>>>> >             // We don't worry about deleted contexts here,  
>>>>> because
>>>>> >             // we assume that delegates registered on events are
>>>>> >             // properly managed
>>>>> >             d.c[d.f]( sd );
>>>>> >         }
>>>>> >     }
>>>>> >
>>>>> > And d.c will be null, causing an error in 'real' javascript.  
>>>>> Should
>>>>> > I put a
>>>>> > check here for the disabled flag,
>>>>> > or should we bind d.c in LzDelegate to some inert event while  
>>>>> it is
>>>>> > disabled?
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> > Henry Minsky
>>>>> > Software Architect
>>>>> > hminsky at laszlosystems.com
>>>>> > _______________________________________________
>>>>> > Laszlo-dev mailing list
>>>>> > Laszlo-dev at openlaszlo.org
>>>>> > http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Henry Minsky
>>>>> Software Architect
>>>>> hminsky at laszlosystems.com
>>>>>
>>>>> _______________________________________________
>>>>> 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