             var doc:DisplayObjectContainer = DisplayObjectContainer(o);
             // Even if they aren't focusable now,
             // listen in case they become later.
-            o.addEventListener("tabChildrenChange", tabChildrenChangeHandler);
-
-            if (doc.tabChildren)
+            var checkChildren:Boolean;
+
+            if (o is IFocusManagerComponent)
+            {
+                o.addEventListener("hasFocusableChildrenChange", hasFocusableChildrenChangeHandler);
+                checkChildren = IFocusManagerComponent(o).hasFocusableChildren;
+            }
+            else
+            {
+                o.addEventListener("tabChildrenChange", tabChildrenChangeHandler);
+                checkChildren = doc.tabChildren;
+            }
+
+            if (checkChildren)
             {
                 if (o is IRawChildrenContainer)
                 {

    public function set showFocusIndicator(value:Boolean):void
    {
        var changed:Boolean = _showFocusIndicator != value;
        
        _showFocusIndicator = value;

        if (hasEventListener("showFocusIndicator"))

        if (!o)
            return;

        // trace("FocusManager mouseDownHandler on " + o);
        
        // Make sure the containing component gets notified.
