I'll try explaining this as best as I can. From what I gather, the bug was caused by a fix of another bug where certain tabs were being hidden due to
bVisible inside of the
highlightAndHide method having a default value of false and the panel having no searchable children to iterate over, thus causing it to return false (meaning don't show the tab). The fix that was implemented returned true if the search value was empty because that would cause the tabs containing panels with no searchable children to be visible. However, the fix didn't take into account the loop that iterates over
mChildPanel which would reset the highlighting on the controls within it.
My fix removes the if clause which causes the method to exit too early, and sets the default value of
bVisible to true if the search result is empty. This will cause panels with
mChildren being a size of 0 to unhighlight while also returning true so that the tab will also be shown. I realize after the fact that the
mChildren.size() == 0 part is unnecessary, but leaving it there shouldn't cause any harm.