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


The following commit(s) were added to refs/heads/develop by this push:
     new 6aca2b5  more improvements to item editing
6aca2b5 is described below

commit 6aca2b5c7049ac8443f577f9764a826f880a2537
Author: Alex Harui <[email protected]>
AuthorDate: Sun Mar 1 23:30:23 2020 -0800

    more improvements to item editing
---
 .../beads/controllers/DateFieldMouseController.as  |  4 ++++
 .../main/royale/mx/controls/AdvancedDataGrid.as    |  9 ++++++--
 .../src/main/royale/mx/controls/DateField.as       | 17 +++++++++++++--
 .../main/royale/mx/controls/beads/DateFieldView.as |  4 ++++
 .../src/main/royale/mx/core/IUIComponent.as        |  2 +-
 .../src/main/royale/mx/core/UIComponent.as         |  4 ++--
 .../src/main/royale/mx/events/FocusEvent.as        | 15 ++++++++++---
 .../royale/mx/events/utils/FocusEventConverter.as  |  8 +++++++
 .../main/royale/spark/components/DataRenderer.as   | 25 ++--------------------
 .../MXAdvancedDataGridItemRenderer.as              | 24 ++++++++++-----------
 10 files changed, 67 insertions(+), 45 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 464d61b..4b1765a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -83,6 +83,10 @@ package org.apache.royale.html.beads.controllers
                        var viewBead:DateFieldView = 
_strand.getBeadByType(DateFieldView) as DateFieldView;
                        viewBead.popUpVisible = true;
                        
IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
+                       COMPILE::JS
+                       {
+                               (viewBead.popUp as IUIBase).element.tabIndex = 
0;
+                       }
                                    
             removeDismissHandler();
             
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index 274835f..67116d6 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -10232,7 +10232,7 @@ public class AdvancedDataGrid extends AdvancedListBase 
implements IDataGrid
      */
     private function setEditedItemPosition(coord:Object):void
     {
-        bEditedItemPositionChanged = true;
+        //bEditedItemPositionChanged = true;
         _proposedEditedItemPosition = coord;
         //invalidateDisplayList();
                commitEditedItemPosition(coord);
@@ -10952,7 +10952,8 @@ public class AdvancedDataGrid extends AdvancedListBase 
implements IDataGrid
     private function itemEditorFocusOutHandler(event:FocusEvent):void
     {
         // trace("itemEditorFocusOut " + event.relatedObject);
-        if (event.relatedObject && contains(event.relatedObject as 
IUIComponent))
+        if (event.relatedObject && (itemEditorInstance is IUIComponent) && 
+                       (itemEditorInstance as 
IUIComponent).owns(event.relatedObject as IUIBase))
             return;
 
                if (inEndEdit)
@@ -11159,6 +11160,10 @@ public class AdvancedDataGrid extends AdvancedListBase 
implements IDataGrid
                var listContent:IParent = (view as 
AdvancedDataGridView).listArea as IParent;
                if (item.parent != listContent)
                        listContent.addElement(item as IChild);
+               COMPILE::JS
+               {
+                       (item as IUIBase).element.style.position = "absolute";
+               }
     }
 
        private function getRowInfo(rowNum:int):ListRowInfo
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
index 5634293..b58a619 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
@@ -42,6 +42,7 @@ import mx.core.IFactory;
 import mx.core.mx_internal;
 import mx.events.CalendarLayoutChangeEvent;
 import mx.events.FlexEvent;
+import mx.events.FocusEvent;
 import mx.events.SandboxMouseEvent;
 import mx.managers.IFocusManagerComponent;
 import mx.managers.ISystemManager;
@@ -2669,8 +2670,9 @@ public class DateField extends ComboBase implements 
IDataRenderer,IFocusManagerC
     /**
      *  @private
      */
-   /*  override protected function focusOutHandler(event:FocusEvent):void
+    override protected function focusOutHandler(event:FocusEvent):void
     {
+               /*
         if (showingDropdown && event != null &&
             this.contains(DisplayObject(event.target)))
             displayDropdown(false);
@@ -2681,7 +2683,12 @@ public class DateField extends ComboBase implements 
IDataRenderer,IFocusManagerC
             checkYearSetSelectedDate(_parseFunction(text, formatString));
         
         selectedDate_changeHandler(event);
-    } */
+               */
+               if (owns(event.relatedObject as IUIBase))
+               {
+                       setFocus();
+               }
+    }
 
     /**
      *  @private
@@ -2939,6 +2946,12 @@ public class DateField extends ComboBase implements 
IDataRenderer,IFocusManagerC
         
         dispatchEvent(new Event("initComplete"));
     }
+
+       override public function owns(child:IUIBase):Boolean
+       {
+               if (child == (view as DateFieldView).popUp) return true;
+               return false;
+       }
 }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
index 5f77146..f35cd4b 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
@@ -49,6 +49,10 @@ package mx.controls.beads
                 var host:Sprite = getHost() as Sprite;
                 host.stage.focus = host;
             }
+                       COMPILE::JS
+                       {
+                               (_textInput as TextInput).setFocus();
+                       }
         }
         
         override public function set strand(value:IStrand):void
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
index adab8c9..497dbe2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
@@ -486,7 +486,7 @@ public interface IUIComponent extends IFlexDisplayObject, 
IChild, IUIBase, IChil
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    function owns(displayObject:IUIComponent):Boolean;
+    function owns(displayObject:IUIBase):Boolean;
 }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
index ab06da7..1dacec8 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
@@ -3713,7 +3713,7 @@ COMPILE::JS
      */
     protected function createChildren():void
     {
-        MXMLDataInterpreter.generateMXMLInstances(_mxmlDocument, this, 
MXMLDescriptor);
+        MXMLDataInterpreter.generateMXMLInstances(mxmlDocument, this, 
MXMLDescriptor);
     }
     
     private var _mxmlDescriptor:Array;
@@ -5233,7 +5233,7 @@ COMPILE::JS
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public function owns(child:IUIComponent):Boolean
+    public function owns(child:IUIBase):Boolean
     {
         trace("owns not implemented");
         return true;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
index 3242c5c..c1e9873 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
@@ -28,6 +28,7 @@ import flash.display.InteractiveObject;
 COMPILE::JS
 {
 import goog.events.BrowserEvent;
+import org.apache.royale.core.WrappedHTMLElement;
 }
 
 import org.apache.royale.events.Event;
@@ -123,14 +124,22 @@ public class FocusEvent extends 
org.apache.royale.events.Event
      */
     private var nativeEvent:Object;
     
-    public function wrapEvent(event:goog.events.BrowserEvent):void
+    public function wrapEvent(event:Object):void
     {
-        wrappedEvent = event;
-        nativeEvent = event.getBrowserEvent();
+        //wrappedEvent = event;
+        nativeEvent = event; //.getBrowserEvent();
     }
     
+    /**
+     * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
+     */
        public function get relatedObject():Object
        {
+               if (nativeEvent && nativeEvent["relatedTarget"])
+               {
+                       return (nativeEvent["relatedTarget"] as 
WrappedHTMLElement).royale_wrapper;
+               }
+                       
                return _relatedObject;
        }
 
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
index 308f085..d61e4d2 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
@@ -28,6 +28,11 @@ package mx.events.utils
         import org.apache.royale.events.utils.IHandlesOriginalEvent;
        }
        
+       COMPILE::JS
+       {
+               import goog.events.BrowserEvent;
+       }
+       
        /**
         *  Converts low level focus events to Royale FocusEvents
         *  
@@ -162,6 +167,8 @@ package mx.events.utils
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.8
+                *  
+                *  @royaleignorecoercion goog.events.BrowserEvent
                 */
                COMPILE::JS
                public static function convert(nativeEvent:Object):FocusEvent
@@ -170,6 +177,7 @@ package mx.events.utils
             if (type == "focusin") type = "focusIn";
             if (type == "focusout") type = "focusOut";
                        var newEvent:FocusEvent = new FocusEvent(type, true);
+                       newEvent.wrapEvent(nativeEvent as BrowserEvent);
                        return newEvent;
                }
        }
diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
index e8599dc..4c3beae 100644
--- 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
+++ 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
@@ -26,8 +26,8 @@ import org.apache.royale.core.IBead;
 import org.apache.royale.core.IItemRendererOwnerView;
 import org.apache.royale.core.ISelectableItemRenderer;
 import org.apache.royale.core.ValuesManager;
-import org.apache.royale.events.Event;
-
+import org.apache.royale.events.Event;
+
 //import org.apache.royale.events.EventDispatcher;
 /**
  *  Dispatched when the <code>data</code> property changes.
@@ -176,27 +176,6 @@ public class DataRenderer extends Group implements 
IDataRenderer
         dispatchEvent(new Event("layoutNeeded"));
     }
     
-    private var _listData:Object;
-    
-    [Bindable("__NoChangeEvent__")]
-    /**
-     *  Additional data about the list structure the itemRenderer may
-     *  find useful.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.6
-     *  @productversion Royale 0.0
-     */
-    public function get listData():Object
-    {
-        return _listData;
-    }
-    public function set listData(value:Object):void
-    {
-        _listData = value;
-    }
-    
     private var _labelField:String = "label";
     
     /**
diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
index 9098a1b..d0199aa 100644
--- 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
+++ 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
@@ -24,8 +24,8 @@ import mx.events.MouseEvent;
 import mx.controls.AdvancedDataGrid;
 import mx.controls.listClasses.AdvancedListBase;
 import mx.controls.listClasses.BaseListData;
-//import mx.controls.listClasses.IDropInListItemRenderer;
-//import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.listClasses.IListItemRenderer;
 import mx.core.mx_internal;
 import mx.managers.IFocusManagerComponent;
 
@@ -58,7 +58,7 @@ use namespace mx_internal;
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class MXAdvancedDataGridItemRenderer extends ItemRenderer //implements 
IListItemRenderer, IDropInListItemRenderer
+public class MXAdvancedDataGridItemRenderer extends ItemRenderer implements 
IListItemRenderer, IDropInListItemRenderer
 {    
     
//--------------------------------------------------------------------------
     //
@@ -88,10 +88,10 @@ public class MXAdvancedDataGridItemRenderer extends 
ItemRenderer //implements IL
      *  @private
      *  Storage for the listData property.
      */
-   /*  private var _listData:BaseListData;
+    private var _listData:Object;
     
     [Bindable("dataChange")]
-     */
+
     /**
      *  The implementation of the <code>listData</code> property
      *  as defined by the IDropInListItemRenderer interface.
@@ -105,21 +105,21 @@ public class MXAdvancedDataGridItemRenderer extends 
ItemRenderer //implements IL
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-   /*  public function get listData():BaseListData
+    public function get listData():Object
     {
         return _listData;
-    } */
+    }
     
     /**
      *  @private
      */
-    /* public function set listData(value:BaseListData):void
+    public function set listData(value:Object):void
     {
         _listData = value;
         
         invalidateProperties();
     }
-     */
+    
     //----------------------------------
     //  editor
     //----------------------------------
@@ -132,7 +132,7 @@ public class MXAdvancedDataGridItemRenderer extends 
ItemRenderer //implements IL
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-   // public var editor:IFocusManagerComponent;
+    public var editor:IFocusManagerComponent;
     
     //----------------------------------
     //  text
@@ -153,13 +153,13 @@ public class MXAdvancedDataGridItemRenderer extends 
ItemRenderer //implements IL
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-   /*  public function get text():String
+    public function get text():String
     {
         if (editor && ("text" in editor))
             return editor["text"];
         
         return null;
-    } */
+    }
     
     //----------------------------------
     //  disclosureGroup

Reply via email to