I just committed a fix for that. Sorry…

Let me know if I messed up anything else.

> On Dec 13, 2021, at 4:23 PM, Yishay Weiss <yish...@apache.org> wrote:
> 
> I’m afraid u did.
> 
> This line 
> 
>  var /** @type {SVGStyleElement} */ style = new SVGStyleElement();
> 
> Results in
> 
> TypeError: Illegal constructor
> 
> 
> On 2021/12/12 13:49:21 Harbs wrote:
>> Someone who’s using Spark DropDownListButton:
>> 
>> Please check that I didn’t break this…
>> 
>> Thanks,
>> Harbs
>> 
>>> On Dec 12, 2021, at 3: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 39b4dcf  Removed innerHTML from DropDownListButton
>>> 39b4dcf is described below
>>> 
>>> commit 39b4dcf092c451675db4d7e762ea6747574be6f3
>>> Author: Harbs <ha...@in-tools.com>
>>> AuthorDate: Sun Dec 12 15:46:42 2021 +0200
>>> 
>>>   Removed innerHTML from DropDownListButton
>>> ---
>>> .../supportClasses/DropDownListButton.as           | 161 
>>> +++++++++++++++------
>>> 1 file changed, 118 insertions(+), 43 deletions(-)
>>> 
>>> diff --git 
>>> a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListButton.as
>>>  
>>> b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListButton.as
>>> index 420e1df..de5c2cc 100644
>>> --- 
>>> a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListButton.as
>>> +++ 
>>> b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListButton.as
>>> @@ -20,8 +20,21 @@
>>> package spark.components.supportClasses
>>> {
>>>     import spark.components.Button;
>>> +   COMPILE::JS
>>> +   {
>>> +           import org.apache.royale.svg.elements.Svg;
>>> +           import org.apache.royale.svg.elements.ClipPath;
>>> +           import org.apache.royale.svg.elements.Text;
>>> +           import org.apache.royale.svg.elements.Rect;
>>> +           import org.apache.royale.svg.elements.Path;
>>> +           import org.apache.royale.core.WrappedHTMLElement;
>>> +           import org.apache.royale.core.WrappedHTMLElement;
>>> +           import org.apache.royale.svg.elements.Svg;
>>> +           import org.apache.royale.svg.elements.ClipPath;
>>> +           import org.apache.royale.svg.GraphicShape;
>>> +   }
>>>     
>>> -    /**
>>> +   /**
>>>      */ 
>>>     public class DropDownListButton extends Button
>>>     {
>>> @@ -30,7 +43,7 @@ package spark.components.supportClasses
>>>             
>>>             /**
>>>              *  Constructor.
>>> -         * 
>>> +            *
>>>              *  @langversion 3.0
>>>              *  @playerversion Flash 10
>>>              *  @playerversion AIR 1.5
>>> @@ -38,57 +51,119 @@ package spark.components.supportClasses
>>>              */
>>>             public function DropDownListButton()
>>>             {
>>> -                   super();
>>>                     instanceId = instanceCounter.toString();
>>>                     instanceCounter++;
>>> +                   super();
>>>             }
>>>             
>>>             private var instanceId:String;
>>>             
>>> -        override public function setActualSize(w:Number, h:Number):void
>>> -        {
>>> -            super.setActualSize(w, h);
>>> -            COMPILE::JS
>>> -            {
>>> -                updateSkin(w, h);
>>> -            }
>>> -        }
>>> +           override public function setActualSize(w:Number, h:Number):void
>>> +           {
>>> +                   super.setActualSize(w, h);
>>> +                   COMPILE::JS
>>> +                   {
>>> +                           updateSkin(w, h);
>>> +                   }
>>> +           }
>>> 
>>> -        COMPILE::JS
>>> -        override public function set label(value:String):void
>>> -        {
>>> -            super.label = value;
>>> -            updateSkin(width, height);
>>> -        }
>>> +           COMPILE::JS
>>> +           override public function set label(value:String):void
>>> +           {
>>> +                   super.label = value;
>>> +                   updateSkin(width, height);
>>> +           }
>>> 
>>> -        COMPILE::JS
>>> -        private function updateSkin(w:Number, h:Number):void
>>> -        {
>>> -                   var clipid:String = "txtClip" + instanceId;
>>> +           COMPILE::JS
>>> +           private function updateSkin(w:Number, h:Number):void
>>> +           {
>>>                     if (h < 4) return;
>>> -            element.innerHTML = '<svg width="' + w + 'px" height="' +
>>> -                h + 'px" xmlns="http://www.w3.org/2000/svg";><clipPath 
>>> id="' + clipid + '"><rect x="0" y="0" height="' + h + 
>>> -                           'px" width="' + (w - 29) + 
>>> 'px"/></clipPath><text y="3px" clip-path="url(#' + clipid + ')">' +
>>> -                label + '</text><style><![CDATA[' +
>>> -                'text{ dominant-baseline: hanging;' +
>>> -                /*    font: 12px Verdana, Helvetica, Arial, sans-serif;*/
>>> -                '}]]></style><rect x="' +
>>> -                (w - 26) + 'px" width="1px" height="' + (h - 4) + 
>>> 'px"/><path d="M' +
>>> -                (w - 21) + ',5 L ' + (w - 13) + ',5 L ' +
>>> -                (w - 17) + ',12 L ' + (w - 21) + ',5"</path></svg>';    
>>> -            
>>> -        }
>>> +                   text.element.textContent = label;
>>> +                   svg.width = w;
>>> +                   svg.element.style.width = w + "px";
>>> +                   svg.height = h;
>>> +                   svg.element.style.height = h + "px";
>>> +                   rect.x = w - 26;
>>> +                   rect.height = h - 4;
>>> +                   var d:String = 'M' + (w - 21) + ',5 L ' + (w - 13) + 
>>> ',5 L ' +
>>> +                           (w - 17) + ',12 L ' + (w - 21) + ',5';
>>> +                   path.element.setAttribute("d",d);
>>> +                   // element.innerHTML = '<svg width="' + w + 'px" 
>>> height="' +
>>> +                   //      h + 'px" 
>>> xmlns="http://www.w3.org/2000/svg";><clipPath id="' + clipid + '"><rect 
>>> x="0" y="0" height="' + h + 
>>> +                   //      'px" width="' + (w - 29) + 
>>> 'px"/></clipPath><text y="3px" clip-path="url(#' + clipid + ')">' +
>>> +                   //      label + '</text><style><![CDATA[' +
>>> +                   //      'text{ dominant-baseline: hanging;' +
>>> +                   //      /*    font: 12px Verdana, Helvetica, Arial, 
>>> sans-serif;*/
>>> +                   //      '}]]></style><rect x="' +
>>> +                   //      (w - 26) + 'px" width="1px" height="' + (h - 4) 
>>> + 'px"/><path d="M' +
>>> +                   //      (w - 21) + ',5 L ' + (w - 13) + ',5 L ' +
>>> +                   //      (w - 17) + ',12 L ' + (w - 21) + 
>>> ',5"</path></svg>';    
>>> +                           
>>> +           }
>>> 
>>> -       
>>> //--------------------------------------------------------------------------
>>> -       //
>>> -       //  Overridden methods
>>> -       //
>>> -       
>>> //--------------------------------------------------------------------------
>>> -       
>>> -       override public function get measuredHeight():Number
>>> -       {
>>> -           return 21; // maybe measure font someday if fontSize is large
>>> -       }
>>> +           override protected function createElement():WrappedHTMLElement
>>> +           {
>>> +                   var elem:WrappedHTMLElement = super.createElement();
>>> +                   svg = new Svg();
>>> +                   clipPath = new ClipPath();
>>> +                   var clipid:String = "txtClip" + instanceId;
>>> +                   clipPath.id = clipid;
>>> +                   clipRect = new Rect();
>>> +                   clipRect.x = 0;
>>> +                   clipRect.y = 0;
>>> +                   clipPath.addElement(clipRect);
>>> +                   svg.addElement(clipPath);
>>> +                   text = new Text();
>>> +                   text.y = 3;
>>> +                   text.element.setAttribute("clip-path",'url(#' + clipid 
>>> + ')');
>>> +                   svg.addElement(text)
>>> +                   var style:SVGStyleElement = new SVGStyleElement();
>>> +                   style.innerHTML = '<![CDATA[' +
>>> +                           'text{ dominant-baseline: hanging;' +
>>> +                           /*    font: 12px Verdana, Helvetica, Arial, 
>>> sans-serif;*/
>>> +                           '}]]>';
>>> +                   svg.element.appendChild(style);
>>> +                   rect = new Rect();
>>> +                   rect.width = 1;
>>> +                   svg.addElement(rect);
>>> +                   path = new Path();
>>> +                   svg.addElement(path);
>>> +                   return elem;
>>> +           }
>>> +           COMPILE::JS
>>> +           private var svg:Svg;
>>> +           COMPILE::JS
>>> +           private var clipPath:ClipPath;
>>> +           COMPILE::JS
>>> +           private var clipRect:Rect;
>>> +           COMPILE::JS
>>> +           private var text:Text;
>>> +           COMPILE::JS
>>> +           private var rect:Rect;
>>> +           COMPILE::JS
>>> +           private var path:Path;
>>> +           //style
>>> +
>>> +           /**
>>> +            * svg
>>> +            *   clipPath
>>> +            *    rect
>>> +            *   text
>>> +            *   style
>>> +            *   rect
>>> +            *   path
>>> +            */
>>> +
>>> +           
>>> //--------------------------------------------------------------------------
>>> +           //
>>> +           //  Overridden methods
>>> +           //
>>> +           
>>> //--------------------------------------------------------------------------
>>> +           
>>> +           override public function get measuredHeight():Number
>>> +           {
>>> +                   return 21; // maybe measure font someday if fontSize is 
>>> large
>>> +           }
>>> 
>>>     }
>>> }
>>> \ No newline at end of file
>> 
>> 

Reply via email to