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.
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'
else
' the button lost focus, undecorate accordingly'
end if
end sub
Actually you probably need to use “m.top” instead of “m.button” assuming this script is in the actual button brs.
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!
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.