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 >> >>