Sure. But even if the focus is not going to be handled by FocusManager, why is it disabling the IME mode?
In my case, setting the focus was probably a mistake. If there’s no focusable objects, shouldn’t the FocusManager fail silently? On Sep 10, 2015, at 4:19 PM, Alex Harui <aha...@adobe.com> wrote: > > On 9/10/15, 3:06 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >> But if a component implements IIMESupport, why should the FocusManager >> turn off IME if it does not implement IFocusManagerComponent? >> >> It seems to me that the code should be something like this (which also >> has the advantage of being clearer and more concise): >> >> _lastFocus = findFocusManagerComponent(InteractiveObject(target)); >> if (Capabilities.hasIME && IMEEnabled) >> { >> if (_lastFocus is IIMESupport) >> IME.enabled = (_lastFocus as IIMESupport).enableIME; >> >> else if (target is IIMESupport) >> IME.enabled = (target as IIMESupport).enableIME; >> >> else >> IME.enabled = false; >> >> } >> >> Am I missing something? > > Well, IMO, frameworks have rules, like all “components” must implement > IUIComponent, and in this case, all focusable “components” must implement > IFocusManagerComponent (for other reasons, like handling focus correctly > for “grouped focus” like radio buttons, “sub-focus” for popups, or > handling disabled states, really complex nesting of focusable editors in > DataGrid, accessibility/screen-readers, etc. Essentially all of that code > in FocusManager that wrestles with the default player focus behavior. And > so if every focusable “component” does implement IFocusManagerComponent > correctly, then I think you don’t need the two lines you are suggesting. > The two lines add tolerance for focus in non-IFocusManagerComponents, but > there might be confusion and trouble elsewhere when you try to allow this > sort of tolerance. I don’t object to attempts to allow more tolerance, > but I think it can turn out to be a lot of work. > > -Alex