Change ptw-20110107-ucB by [email protected] on 2011-01-07 19:29:45 EST
    in /Users/ptw/OpenLaszlo/trunk-3
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Improve CSS performance and function

Bugs Fixed:

    LPP-9617 Need a way to define CSS property abbreviations (and their 
expansion)
    LPP-9567 Attribute init order is non-deterministic (partial)

Technical Reviewer: [email protected] (pending)
QA Reviewer: [email protected] (pending)
Doc Reviewer: [email protected] (pending)

Release Notes:

    You can now rely on attributes being initialize according to the
    kind of initial value they have.  Attributes with immediate values
    are initialized first, followed by attributes with style bindings,
    followed by attributes with constraints.  Within those groupings,
    the ordering is indeterminite.

    As a consequence of this change, you can now reliably created
    constraints that depend on style bindings.

Overview:

    Completely revamped the way CSS styles are applied to nodes,
    maintaining the defaulting and overriding semantics, but allowing
    style-bindings to be applied /en masse/ rather than as individual
    constraints.  The result should be the style bindings are
    significantly more efficient than constraints.

    Added support for CSS property "expanders" to handle CSS
    abbreviated properties with correct inheritance and overriding.

    Added support for nodes to know at runtime the type of their
    attributes.  There is a single data structure that describes
    attributes' type, style-binding, and fallback value.

Details:
    lfc-undeclared:  Add $attributeDescriptor and $CDDSescriptor

    LzCSSStyle:  Handle property expanders.

    LzDebug: Improve explainStyleBindings to display local overrides
    of CSS bindings (whether by constraint or explicit value), and to
    understand attribute types and property expanders.

    LzNode: Process style bindings separately from constraints using
    the new batch mechanism.

    LzNode, LzDefs, LzState, LzReplicationManager: Remove previous
    attribute descriptor mechanism which was not fully implemented and
    was inefficient.  Use new compile-time evaluator to simplify
    debug/profile decisions.  StyleConstraints are now just a marker
    that is used to determine inheritance and overriding, not to carry
    the actual style binding.

    PresentationTypes: add a way to create a presentation type value
    from a presentation value for debugging.

    LaszloCanvas: update style binding suppor to new mechanism.

    LzDebugStub: Let's allow a bigger stack.

    ViewSchema:  Add new attribute property `expander`.

    NodeModel, ClassModel: Impement expander.  Handle nodes that are
    not in the DOM (for debugging).  Implement new style binding
    scheme, gather attribute descriptor information, compute
    inheritance at compile time and install in class.  Only install in
    instances when necessary.  Fake type information for built-in's.
    Handle legacy $style bindings compatibly.  Do common subr
    elimination on init args by hand.

    boxmodel:  Implement expanders for abbreviated properties

Tests:
    Test case from bug.  styles/metasuite, smokecheck

Files:
M       WEB-INF/lps/schema/lfc-undeclared.lzx
M       WEB-INF/lps/lfc/services/LzCSSStyle.lzs
M       WEB-INF/lps/lfc/debugger/LzDebug.lzs
M       WEB-INF/lps/lfc/core/LzNode.lzs
M       WEB-INF/lps/lfc/core/PresentationTypes.lzs
M       WEB-INF/lps/lfc/core/LzDefs.lzs
M       WEB-INF/lps/lfc/views/LaszloCanvas.lzs
M       WEB-INF/lps/lfc/helpers/LzState.lzs
M       WEB-INF/lps/lfc/data/LzReplicationManager.lzs
M       WEB-INF/lps/lfc/compiler/LzDebugStub.lzs
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
M       lps/components/mixins/boxmodel.lzx

Changeset: http://svn.openlaszlo.org/openlaszlo/patches/ptw-20110107-ucB.tar

Reply via email to