You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/01/11 06:49:23 UTC

[royale-asjs] 02/10: fix up EventUtils now that compiler will catch passing a plain object in as an interface. Use a factory function for Event and a conversion function for MouseEvent

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 969353f3a345d84be4fe8c69776f21ac6ff380ea
Author: Alex Harui <ah...@apache.org>
AuthorDate: Mon Jan 7 22:30:36 2019 -0800

    fix up EventUtils now that compiler will catch passing a plain object in as an interface.  Use a factory function for Event and a conversion function for MouseEvent
---
 .../apache/royale/conversions/MouseEventInit.as    | 34 ++++++++++++++++++++++
 .../apache/royale/conversions/createEventInit.as   | 30 +++++++++++++++++++
 .../org/apache/royale/events/utils/EventUtils.as   | 18 ++++++++----
 3 files changed, 76 insertions(+), 6 deletions(-)

diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/MouseEventInit.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/MouseEventInit.as
new file mode 100644
index 0000000..f61154d
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/MouseEventInit.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
+//
+//      http://www.apache.org/licenses/LICENSE-2.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.conversions
+{
+COMPILE::JS
+{
+    import window.MouseEventInit;
+}
+
+    /**
+     * @royaleignorecoercion window.MouseEventInit 
+     */
+    COMPILE::JS
+    public function MouseEventInit(value:Object):window.MouseEventInit
+    {
+        return value as window.MouseEventInit;
+    }
+}
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/createEventInit.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/createEventInit.as
new file mode 100644
index 0000000..1f37342
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/conversions/createEventInit.as
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+//
+//      http://www.apache.org/licenses/LICENSE-2.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.conversions
+{
+    /**
+     * @royaleignorecoercion EventModifierInit 
+     */
+    COMPILE::JS
+    public function createEventInit(bubbles:Boolean = false,
+                                    cancelable:Boolean = false):EventModifierInit
+    {
+        return { "bubbles": bubbles, "cancelable": cancelable } as EventModifierInit;
+    }
+}
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/EventUtils.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/EventUtils.as
index 42ee134..3ea56f0 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/EventUtils.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/EventUtils.as
@@ -18,6 +18,14 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.events.utils
 {
+COMPILE::JS
+{
+    import org.apache.royale.conversions.createEventInit;
+    import org.apache.royale.conversions.MouseEventInit;
+    import window.Event;
+    import window.MouseEvent;
+}
+
     /**
 	 *  Provides static methods for creating custom events in JS
      *  
@@ -35,7 +43,7 @@ package org.apache.royale.events.utils
 
            try
            {
-               customEvent = new window.Event(type, {bubbles: bubbles, cancelable: cancelable});
+               customEvent = new window.Event(type, createEventInit(bubbles, cancelable));
                return customEvent;
            }
            catch (e:Error)
@@ -58,16 +66,14 @@ package org.apache.royale.events.utils
            var mouseEvent:Object = null;
 
            if (!params)
-           {
                params = {};
-           }
-
+           
            try
            {
                params.bubbles = bubbles;
                params.cancelable = cancelable;
-
-               mouseEvent = new window.MouseEvent(type, params);
+               var initObject:MouseEventInit = MouseEventInit(params);
+               mouseEvent = new window.MouseEvent(type, initObject);
                return mouseEvent;
            }
            catch (e:Error)