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?

+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) {
-        var s = 'rect(0px ' + this._w + ' ' + this._h + ' 0px)';
-        this.__LZdiv.style.clip = s
-    } else if (this.__LZdiv.style.clip) {
-        var s = quirks.fix_ie_css_syntax ? 'rect(auto auto auto auto)' : '';
-        this.__LZdiv.style.clip = s;
+        // have clip, set it
+        clip = 'rect(0px ' + this._w + ' ' + this._h + ' 0px)';
+    } else if (this._clip) {
+        // had clip, clear it
+        clip = quirks.fix_ie_css_syntax ? 'rect(auto auto auto auto)' : '';
+    }
+    if (clip !== this._clip) {
+        this._clip = clip;
+        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?

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.

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)`?


On 2010-09-15, at 17:54, Max Carlson wrote:

> Change 20100915-maxcarlson-x by maxcarl...@friendly on 2010-09-15 14:46:56 PDT
>    in /Users/maxcarlson/openlaszlo/trunk-clean
>    for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: Create click containers only as needed
> 
> Bugs Fixed: LPP-6892 -  Generated File Sizes baseline complete; Performance 
> Tuning ongoing
> 
> Technical Reviewer: ptw
> QA Reviewer: hminsky
> 
> Overview: This change only creates click containers for clickable sprites.  
> This drastically reduces the number of divs for each application.
> 
> Details: LzSprite - When addChild() sees a child sprite that has a clickdiv, 
> it creates a clickdiv container tree and appends it.  setClickable() creates 
> a click tree as-needed.  All setters, e.g. setX() only update the click div 
> if present.  __updateClip() now tracks clip css in the _clip attribute.  
> setContextMenu() now uses the __createContainerDivs() to create container 
> divs. __copystyles() tries to avoid copying unneeded styles and uses cached 
> sprite css values.
> 
> LzTextSprite - Don't create click divs.
> 
> LzInputTextSprite - Delay creating click divs until they're needed.
> 
> Tests: All apps run as before (but faster) in dhtml.
> 
> Files:
> M       WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
> M       WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
> M       WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
> 
> Changeset: 
> http://svn.openlaszlo.org/openlaszlo/patches/20100915-maxcarlson-x.tar


Reply via email to