On 11/5/10 3:58 PM, P T Withington wrote:
I see the problem.

The CSS compiler was canonicalizing color values to rgb format, and I guess the 
gradient parser is only accepting #-format.  I don't have any way of passing 
through the original without ripping out the CSS compiler altogether, so I will 
adjust the canonical form to be #-format.  But really, we need to use the color 
presentation type for parsing colors whenever we expect a color, so that any format 
will work.  E.g., I assume a gradient should also be able to be specified with 
rgba(), instead of # and&?

Yes, rgb(), rgba() and # colors should be accepted... This is also true for bgcolor/background-color...

I'll have another version for review as soon as I have passed your test case.

Okay, thanks!

On 2010-11-05, at 17:48, Max Carlson wrote:

Not approved.  This doesn't fix components/demos/house.lzx when I remove the 
quotes from around the gradient string values.  I checked, and the 
'gradient-fill' attribute is type 'string'...

On 11/4/10 2:11 PM, P T Withington wrote:
Change ptw-20101104-S8x by [email protected] on 2010-11-04 14:04:07 EDT
     in /Users/ptw/OpenLaszlo/trunk-3
     for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Pass custom CSS property values as strings

Bugs Fixed: LPP-9490 CSS Parser should default to delivering unknown attributes 
as strings to be presentation-type parsed at runtime

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

Release Notes:

     The CSS parser passes through most property values unchanged (but
     as strings, so they are valid Javascript). We only need a few
     special properties, e.g., the keyword `inherit` will be passed as
     a unique value, to distinguish from the string "inherit" (so if
     you wanted to specify the content of a node as the literal value
     "inherit", not have it inherit a value from it's parent). For
     backwards compatibility, color specifications are still
     canonicalized at compile-time and output them as hex numbers --
     this may go away in the future. If you want a color specification
     to come through unparsed, you can use `rgba(...,...,...,1)`,
     because that will _not_ be converted at runtime. Any values that
     appear as "arguments" to a function (e.g., url(), rect(),
     linear-gradient()) will be passed straight through.  The
     attribute's presentation type is invoked when the attribute is
     bound to a CSS property value; it's job is to convert that value
     to the appropriate internal representation.

Overview:
     Rewrote the compile-time CSS parser to do nearly no compile-time
     conversion of property values, and to pass any custom (unknown)
     values through as strings, so the runtime can use the presentation
     type system to parse arbitrary values.

Details:

     neighborhoodclasses, designerview:  Fixed up the specification of
     some attributes to be more modern for testing.

     LzNode: Use acceptAttribute to install style property values.

     CSSHandler:  Rewritten to do minimal compile-time processing.

Tests:

Files:
M       test/style/neighborhood/neighborhoodclasses.lzx
M       test/style/designerview.lzx
M       WEB-INF/lps/lfc/core/LzNode.lzs
M       WEB-INF/lps/server/src/org/openlaszlo/css/CSSHandler.java

Changeset: http://svn.openlaszlo.org/openlaszlo/patches/ptw-20101104-S8x.tar

Reply via email to