Ext.util.Focusable is not able to handle Ext.Widget.

Ext.Widget can get focus. However, Ext.Widget is not a component and it's not an element.


Well, to more precise Ext.Widget do not have the method of Component. However, it may seems to be a component for the code below due to this Ext JS override that is part of the framework:



Code:



Ext.define('Ext.overrides.Widget', {
override: 'Ext.Widget',


uses: ['Ext.Component'],


$configStrict: false,


isComponent: true,

So the code below fail on 'focusTarget.focus()' because focus doesn't exist for an Ext.Widget. However, if I 'fix' Ext JS library to tell that Ext.Widget is really not a component. Then the code below still fail on isFocusable because an Ext.Widget is not an Element.

Code:



revertFocus: function() {
var me = this,
focusTarget = me.previousFocus;
me.previousFocus = null;
// If this about to be hidden component contains focus...
// Before hiding, restore focus to what was focused when we were shown.
if (focusTarget && me.containsFocus) {
// If reverting back to a Component, it will re-route to a close focusable relation
// if it is not now focusable.
if (focusTarget.isComponent) {
focusTarget.focus();
} else // Reverting to an element.
{
focusTarget = Ext.fly(focusTarget);
// TODO: Remove extra check when IE8 retires.
if (Ext.isIE8 || focusTarget.isFocusable()) {
focusTarget.focus();
}
}
}
}