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