Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
sanitycheck
Level 7

Returning focus to a custom component

Hello, I'm new to BrightScript and trying to get to grips with it. Apologies in advance if this is super basic, I shall try to ask progressively more difficult questions as time goes on!

So I have a custom component with some other components inside it, simplistic example (real life is complicated):
<component name="TopMenu" extends="Group" initialFocus="foo1">
  <children>
    <LayoutGroup>
      <Button id="foo1" text="Hello" />
      <Button id="foo2" text="World" />
    </LayoutGroup>
  </children>
</component>

InitialFocus works fine when the app starts up, then upon user interaction the scene transfers focus to another component (e.g. a MarkupGrid).

Later, in the scene code, I try to transfer focus back to my component, e.g.
topMenu.setFocus(true)

...but this doesn't do anything automatically (i.e. re-trigger initialFocus) and I can't find anything built-in to observe which would allow me to react in the component code.

This (reaching in and focusing the LayoutGroup directly, not nice but worth trying in case there's some special magic) doesn't do anything either
topMenu.getChild(0).setFocus(true)


This (directly setting focus on the first button) does work
topMenu.getChild(0).getChild(0).setFocus(true)

...so obviously I could observe a new "hasCustomFocus" interface on my component, then make sure I use that instead of setFocus, and react to changes to refocus the previously focused button (which I'd have to keep track of myself). Surely I'd be clumsily duplicating functionality that's already built-in though, and future code maintainers will realise I'm an idiot.

What's the right thing to do here? Thanks in advance!
0 Kudos