     //  Overridden methods
     //
     //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     *  This component holds the focus and accessibilityImplementation (DataGridAccImpl)
+     *  for the DataGrid to enable accessibility when the focus shifts to DataGrid descendants, 
+     *  notably item editors.
+     * 
+     *  DataGridAccImpl/createAccessibilityImplementation() initializes the focusOwner's
+     *  accessibilityImplementation, rather than the DataGrid's, so that the MSAA 
+     *  representation of descendant components will not be "obscured" by DataGridAccImpl.   
+     * 
+     *  @see #createChidlren(), #setFocus(), #isOurFocus().
+     */ 
+    mx_internal var focusOwner:UIComponent;
+    
+    
+    /**
+     *  @private
+     *  Create the focusOwner - a component that holds the keyboard focus for the DataGrid
+     *  for the sake of the accessibility implementation.
+     * 
+     *  This component fails to add its DataGridAccImpl accessibilityImplementation to
+     *  the MSAA if it doesn't render, so we draw one alpha=0.0 pixel here and make it
+     *  $visible=true.
+     */
+    override protected function createChildren():void
+    {
+        super.createChildren();
+        
+        focusOwner = new UIComponent();
+        const g:Graphics = focusOwner.graphics;
+        g.clear();
+        g.beginFill(0x000000, 0.0);
+        g.drawRect(0, 0, 1, 1);
+        g.endFill();
+        $addChild(focusOwner);
+        focusOwner.$visible = true;
+    }
+    
 
     /**
      *  @private

import mx.core.IIMESupport;
import mx.core.LayoutDirection;
import mx.core.ScrollPolicy;
import mx.core.mx_internal;
import mx.events.FlexEvent;
import mx.managers.CursorManager;

        if (DataGrid.createAccessibilityImplementation != null)
            DataGrid.createAccessibilityImplementation(this);
    }
    
    /**
     *  @private
     */
    override public function setFocus():void
    {
        if (grid)
            focusOwner.setFocus();
    }
    
    /**
     *  @private
     */
    override protected function isOurFocus(target:DisplayObject):Boolean
    {
        return (target == focusOwner) || super.isOurFocus(target);
    }    
    
    /**
     *  @private
