On Sep 22, 2010, at 2:38 PM, P T Withington <[email protected]> wrote:

> On 2010-09-22, at 17:32, Max Carlson wrote:
> 
>> On 9/22/10 2:23 PM, P T Withington wrote:
>>> Not approved.
>>> 
>>> Issues:
>>> 
>>> 1) There seems like there is a type-oh here.  You refer to both `this.clip` 
>>> and `this._clip` in your test, but you only seem to update `this._clip`?  
>>> Do we really need both?
>> 
>> We need both: ._clip has the css representation, while .clip has the value 
>> set by the user when they called setClip().  This is like ._width and 
>> .width...
> 
> That doesn't answer my question about the non-parallel code below:
> 
>>> +LzSprite.prototype._clip = '';
>>> LzSprite.prototype.__updateClip = function() {
>>>    var quirks = this.quirks;
>>>    if (this.isroot&&  this.quirks.canvas_div_cannot_be_clipped) return;
>>> +    // default
>>> +    var clip = '';
>>>    if (this.clip&&  this.width != null&&  this.width>= 0&&  this.height != 
>>> null&&  this.height>= 0) {
> 
> Here you test clip
> 
>>> +        // have clip, set it
>>> +        clip = 'rect(0px ' + this._w + ' ' + this._h + ' 0px)';
>>> +    } else if (this._clip) {
> 
> Here you test _clip
> 
>>> +        // had clip, clear it
>>> +        clip = quirks.fix_ie_css_syntax ? 'rect(auto auto auto auto)' : '';
>>> +    }
>>> +    if (clip !== this._clip) {
>>> +        this._clip = clip;
> 
> Here you update _clip but not clip.
> 
> It seems like this code should either consistently use _clip or clip but not 
> one in one place and the other in another place?

Ah - right!

>>> +        this.__LZdiv.style.clip = clip
>>>    } else {
>>>        // return so we don't set the containers
>>>        return;
>>>    }
>>> 
>>> Questions:
>>> 
>>> 1) Am I understanding correctly here:
>>> 
>>> +        var parentcontainer = sprite.__parent&&  sprite.__parent[propname];
>>> +        if (parentcontainer) {
>>> +            parentcontainer.appendChild(newdiv);
>>> +        }
>>> 
>>> parentcontainer will only not exist for the root sprite?  Can we have a 
>>> comment to that effect?
>> 
>> Actually, parentcontainer can be undefined in a lot of cases.  I'll comment 
>> about that.
> 
> Really?  I guess I don't understand what this code is doing then.  I thought 
> you needed a chain of containers back to the root?  If you don't, then why 
> are we iterating through the parents creating containers?

Yeah it was kind of unexpected but there are cases where a tree of divs can be 
created before they're attached to the DOM.  Just the way views work I guess...

When the sprite is added as a child, the code there ensures it has a valid 
click tree that does go all the way to the canvas.

> 
>>> 2) The `||` clauses here:
>>> 
>>> +    var left = sprite._x || 0;
>>> +    if (left) {
>>> +        to.style.left = left;
>>>    }
>>> +    var top = sprite._y || 0;
>>> +    if (top) {
>>> +        to.style.top = top;
>>> +    }
>>> +    var display = sprite.__csscache.__LZdivdisplay || '';
>>> +    if (display) {
>>> +        to.style.display = display;
>>> +    }
>>> 
>>> have no effect, since they are falsey values, they will never be installed. 
>>>  If it is important that they get installed, you need to take out the `if`. 
>>>  If not, you might as well delete the `||` clauses.
>> 
>> Good point!
>> 
>>> 3) There are a lot of places where you are testing 
>>> `(this.quirks.fix_clickable&&  this.__LZclickcontainerdiv)`.  Is the first 
>>> test actually necessary?  You will never have a clickcontainer div if the 
>>> quirk is off will you?  Maybe the same for `(this.quirks.fix_contextmenu&&  
>>> this.__LZcontextcontainerdiv)`?
>> 
>> I was trying to make the code a little more self-documenting, via the 
>> quirks.  But you're right, we don't strictly need to do these tests...
> 
> Ok, well, that's fine if you leave them; just was wondering because elsewhere 
> we are trying to squeeze every last cycle out of the kernel code

No I'll take 'em out!

Reply via email to