Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 8

Button to Listen to Focus Event?

I've created a custom component that extends the button class. I would like to listen to a Focus event within the custom component so I can tell the UI nodes to display differently when the component is in focus. I've tried to listen to the focusPercent field within component's interface like below but the eventhandler is never called.

<field id="focusPercent" type="float" onChange="itemFocusChanged"/>

How do I get this custom component/button to listen to the focus event so I can have it react to getting into and out of focus?

p.s. This is how I am setting the button into focus: button.setFocus(true)
0 Kudos
Level 12

Re: Button to Listen to Focus Event?

button and Group (which button is extended from) don't have a focusPercent field, afaik.
You could do this; In your .brs script, add an observer to the button's focusedChild:

  m.button.observeField("focusedChild", "focusChanged")

sub focusChanged()
  if m.button.hasFocus()
    ' the button has focus, decorate accordingly'
    ' the button lost focus, undecorate accordingly'
  end if
end sub

Actually you probably need to use "" instead of "m.button" assuming this script is in the actual button brs.
0 Kudos
Level 8

Re: Button to Listen to Focus Event?

That worked! This seems like a bug. It seems like an oversight not to officially support a buttons onFocus event instead of having to use a workaround like this.
Thanks!"focusedChild", "onFocusChanged")
0 Kudos

Re: Button to Listen to Focus Event?

Glad to hear that worked @jaxim 


Also ... can you listen for the built in 'itemFocused' event when scrolling right?



Screenshot 2023-06-02 131445.png


Also I want to invite you to the Roku Developers Slack channel where you can post queries in the #general channel get answers within a few hours, that really helps when you get stuck.



0 Kudos