I’d think the same thing. The utilities I created are specific to getters.
I did not create utility functions for setters. That’s something which should probably be added. Harbs > On Mar 15, 2018, at 6:11 PM, Alex Harui <[email protected]> wrote: > > Harbs, did you test trying calling defineSimpleGetter then > defineSimpleSetter to define a read/write property? I would think > defineSimpleSetter would wipe out the getter. IIRC, the object passed to > Object.defineProperty is not merged with any existing/prior object. > > Thanks, > -Alex > > On 3/15/18, 2:06 AM, "[email protected]" <[email protected]> wrote: > >> This is an automated email from the ASF dual-hosted git repository. >> >> harbs pushed a commit to branch develop >> in repository >> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.ap >> ache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7Caharui%40adobe.com >> %7C68535bf386224e27c2b008d58a541c7f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >> %7C0%7C636567016216425669&sdata=alUyYJmeNSjS%2BH3SIspygisJzNeysA1YjfjBKtna >> 6lU%3D&reserved=0 >> >> >> The following commit(s) were added to refs/heads/develop by this push: >> new af19f12 Added utility function for adding JS getters >> af19f12 is described below >> >> commit af19f12fb623a473e16a4d83e0d89234abdaea4d >> Author: Harbs <[email protected]> >> AuthorDate: Thu Mar 15 11:06:51 2018 +0200 >> >> Added utility function for adding JS getters >> >> Added IEEventAdapterBead which adds required name getters for >> MouseEvent and KeyboardEvent protoypes. >> --- >> .../Basic/src/main/resources/basic-manifest.xml | 1 + >> .../apache/royale/html/beads/IEEventAdapterBead.as | 66 >> ++++++++++++++++++++++ >> .../projects/Core/src/main/royale/CoreClasses.as | 2 + >> .../org/apache/royale/utils/object/defineGetter.as | 34 +++++++++++ >> .../royale/utils/object/defineSimpleGetter.as | 38 +++++++++++++ >> 5 files changed, 141 insertions(+) >> >> diff --git >> a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> index dbff20e..442fc49 100644 >> --- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> +++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> @@ -96,6 +96,7 @@ >> >> <component id="ApplicationParameters" >> class="org.apache.royale.html.beads.ApplicationParametersBead"/> >> <component id="ApplicationParametersCaseInsensitive" >> class="org.apache.royale.html.beads.ApplicationParametersCaseInsensitiveBe >> ad"/> >> + <component id="IEEventAdapter" >> class="org.apache.royale.html.beads.IEEventAdapterBead"/> >> >> <component id="SimpleAlert" >> class="org.apache.royale.html.SimpleAlert"/> >> <component id="Alert" class="org.apache.royale.html.Alert"/> >> diff --git >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/I >> EEventAdapterBead.as >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/I >> EEventAdapterBead.as >> new file mode 100644 >> index 0000000..41711a6 >> --- /dev/null >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/I >> EEventAdapterBead.as >> @@ -0,0 +1,66 @@ >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, Version >> 2.0 >> +// (the "Licens"); you may not use this file except in compliance with >> +// the License. You may obtain a copy of the License at >> +// >> +// >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache >> .org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C68535bf3 >> 86224e27c2b008d58a541c7f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365 >> 67016216425669&sdata=Gg6raEdIO9ac3PPOqDowCbknYLq2LDgOb0ODKK8OIVs%3D&reserv >> ed=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +package org.apache.royale.html.beads >> +{ >> + import org.apache.royale.core.IBead; >> + import org.apache.royale.core.IStrand; >> + COMPILE::JS >> + { >> + import org.apache.royale.utils.object.defineSimpleGetter; >> + } >> + >> + /** >> + * The IEEventAdapterBead is used to get URL parameter values specified >> + * when loading an application. It's different than the >> ApplicationParametersBead >> + * in that URL parameter keys are case insensitive. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion Royale 0.9.2 >> + */ >> + public class IEEventAdapterBead implements IBead >> + { >> + public function IEEventAdapterBead() >> + { >> + >> + } >> + >> + /** >> + * @copy org.apache.royale.core.IBead#strand >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion Royale 0.9.3 >> + */ >> + public function set strand(value:IStrand):void >> + { >> + COMPILE::JS >> + { >> + if(typeof >> window["KeyboardEvent"].prototype["name"] == "undefined") >> + {// IE does not have a prototype name property >> + >> defineSimpleGetter(window["KeyboardEvent"].prototype,"name","Keyboar >> dEvent"); >> + >> defineSimpleGetter(window["MouseEvent"].prototype,"name","MouseEvent >> "); >> + } >> + } >> + } >> + >> + } >> +} >> \ No newline at end of file >> diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as >> b/frameworks/projects/Core/src/main/royale/CoreClasses.as >> index f29e2e5..8685789 100644 >> --- a/frameworks/projects/Core/src/main/royale/CoreClasses.as >> +++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as >> @@ -222,6 +222,8 @@ internal class CoreClasses >> { >> import org.apache.royale.core.WrappedHTMLElement >> ;WrappedHTMLElement; >> import org.apache.royale.core.IRoyaleElement; IRoyaleElement; >> + import org.apache.royale.utils.object.defineGetter; >> defineGetter; >> + import org.apache.royale.utils.object.defineSimpleGetter; >> defineSimpleGetter; >> } >> //Package Level Functions >> import org.apache.royale.debugging.assert; assert; >> diff --git >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineGetter.as >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineGetter.as >> new file mode 100644 >> index 0000000..501cd14 >> --- /dev/null >> +++ >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineGetter.as >> @@ -0,0 +1,34 @@ >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, Version >> 2.0 >> +// (the "License"); you may not use this file except in compliance with >> +// the License. You may obtain a copy of the License at >> +// >> +// >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache >> .org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C68535bf3 >> 86224e27c2b008d58a541c7f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365 >> 67016216425669&sdata=Gg6raEdIO9ac3PPOqDowCbknYLq2LDgOb0ODKK8OIVs%3D&reserv >> ed=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +package org.apache.royale.utils.object >> +{ >> + /** >> + * Defines a getter function on a Javascript object (often used to add >> to prototypes) >> + * Takes a function which returns a value >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion Royale 0.9.3 >> + */ >> + public function >> defineGetter(obj:Object,prop:String,getterFunction:Function):void >> + { >> + Object.defineProperty(obj, prop, {"get": getterFunction}); >> + } >> + >> +} >> \ No newline at end of file >> diff --git >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineSimpleGetter.as >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineSimpleGetter.as >> new file mode 100644 >> index 0000000..42b5d9f >> --- /dev/null >> +++ >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/ >> defineSimpleGetter.as >> @@ -0,0 +1,38 @@ >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, Version >> 2.0 >> +// (the "License"); you may not use this file except in compliance with >> +// the License. You may obtain a copy of the License at >> +// >> +// >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache >> .org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C68535bf3 >> 86224e27c2b008d58a541c7f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365 >> 67016216425669&sdata=Gg6raEdIO9ac3PPOqDowCbknYLq2LDgOb0ODKK8OIVs%3D&reserv >> ed=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> +///////////////////////////////////////////////////////////////////////// >> /////// >> +package org.apache.royale.utils.object >> +{ >> + /** >> + * Defines a getter function on a Javascript object (often used to add >> to prototypes) >> + * Takes a simple value to return. >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion Royale 0.9.3 >> + */ >> + public function >> defineSimpleGetter(obj:Object,prop:String,returnVal:*):void >> + { >> + Object.defineProperty(obj, prop, { >> + "get": function ():* { >> + return returnVal; >> + } >> + }); >> + } >> + >> +} >> \ No newline at end of file >> >> -- >> To stop receiving notification emails like this one, please contact >> [email protected]. >
