Hi Harbs, can you elaborate more on defaultLenghtUnit. not sure I understand what is the purpose or how to use it. thanks
El mar., 14 ene. 2020 a las 20:53, Harbs (<harbs.li...@gmail.com>) escribió: > What prompted this change was the fact that I found that flex-shrink was > not working because it’s a number. (flex-grow and many other CSS props > would have the same issue) > > This seems more PAYG than the original implementation (I was able to > remove code from SimpleCSSValuesImpl), and I think it truly takes care of > all cases. > > FWIW, I also added “defaultLengthUnit” to the “all css” impl to allow the > user to specify a unit other than px when converting. IIRC, Carlos ran into > that problem. > > Cheers, > Harbs > > > On Jan 14, 2020, at 9:46 PM, ha...@apache.org wrote: > > > > This is an automated email from the ASF dual-hosted git repository. > > > > harbs pushed a commit to branch develop > > in repository https://gitbox.apache.org/repos/asf/royale-asjs.git > > > > > > The following commit(s) were added to refs/heads/develop by this push: > > new 925c5ed Reversed logic on number lookup in AllCSSValuesImpl > > 925c5ed is described below > > > > commit 925c5ed94461f3bac6342d38b5c94b6e31c40ceb > > Author: Harbs <ha...@in-tools.com> > > AuthorDate: Tue Jan 14 21:46:01 2020 +0200 > > > > Reversed logic on number lookup in AllCSSValuesImpl > > > > There are many more css properties which can accept numbers than > > <length> properies. This should enable correct parsing of *all* valid > > css numbers > > --- > > .../org/apache/royale/core/AllCSSValuesImpl.as | 53 > +++++++++++++++++++++- > > .../org/apache/royale/core/SimpleCSSValuesImpl.as | 20 ++++---- > > 2 files changed, 62 insertions(+), 11 deletions(-) > > > > diff --git > a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as > b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as > > index 6a2961e..b83de8f 100644 > > --- > a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as > > +++ > b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as > > @@ -19,6 +19,8 @@ > > package org.apache.royale.core > > { > > > > + import org.apache.royale.utils.CSSUtils; > > + > > /** > > * The AllCSSValuesImpl class will eventually implement a full set > of > > * CSS lookup rules. > > @@ -73,6 +75,55 @@ package org.apache.royale.core > > { > > return AllCSSValuesImpl._numericStyles; > > } > > - > > + private var _defaultLengthUnit:String = "px"; > > + /** > > + * The default value used when converting numbers in CSS to > length units. Can be px, em, etc. > > + * Defaults to px > > + * @langversion 3.0 > > + * @playerversion Flash 10.2 > > + * @playerversion AIR 2.6 > > + * @productversion Royale 0.9.7 > > + */ > > + public function get defaultLengthUnit():String > > + { > > + return _defaultLengthUnit; > > + } > > + > > + public function set defaultLengthUnit(value:String):void > > + { > > + _defaultLengthUnit = value; > > + } > > + protected var lengthProps:Array = [ > > + "width", > > + "height", > > + "margin", > > + "padding", > > + "borderWidth", > > + "fontSize", > > + "textShadow" > > + ]; > > + protected function isLengthProp(prop:String):Boolean{ > > + if(lengthProps.indexOf(prop) != -1){ > > + return true; > > + } > > + // margin and padding can have variants > > + if(prop.indexOf("margin")== 0){ > > + return true; > > + } > > + if(prop.indexOf("padding")== 0){ > > + return true; > > + } > > + return false; > > + } > > + COMPILE::JS > > + override protected function > processNumberStyle(prop:String,value:*):*{ > > + if (colorStyles[prop]) > > + value = CSSUtils.attributeFromColor(value); > > + else if (isLengthProp(prop)) > > + return value + defaultLengthUnit; > > + return value; > > + } > > + > > + > > } > > } > > diff --git > a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as > b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as > > index c2221c1..5c5273b 100644 > > --- > a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as > > +++ > b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as > > @@ -748,10 +748,7 @@ package org.apache.royale.core > > if (typeof(value) == 'function') > continue; > > cssString += p + ": "; > > if (typeof(value) == 'number') { > > - if (colorStyles[p]) > > - value = CSSUtils.attributeFromColor(value > as uint); > > - else > > - value = value.toString() + 'px'; > > + value = processNumberStyle(p,value); > > } > > else if (p == 'backgroundImage') { > > if (p.indexOf('url') != 0) > > @@ -764,6 +761,14 @@ package org.apache.royale.core > > ss.insertRule(cssString, > ss.cssRules.length); > > } > > } > > + COMPILE::JS > > + protected function processNumberStyle(prop:String,value:*):*{ > > + if (colorStyles[prop]) > > + value = CSSUtils.attributeFromColor(value); > > + else if (numericStyles[prop]) > > + return value; > > + return value + 'px'; > > + } > > > > COMPILE::JS > > private var ss:CSSStyleSheet; > > @@ -871,12 +876,7 @@ package org.apache.royale.core > > if (value === undefined) > > continue; > > if (typeof(value) == 'number') { > > - if (colorStyles[p]) > > - value = CSSUtils.attributeFromColor(value); > > - else if (numericStyles[p]) > > - value = value.toString(); > > - else > > - value = value.toString() + 'px'; > > + value = processNumberStyle(p,value); > > } > > else if (p == 'backgroundImage' && value.indexOf('url') > != 0) { > > value = 'url(' + value + ')'; > > > > -- Carlos Rovira http://about.me/carlosrovira