Funny you should mention a workaround, I did this in the drawListRow and it seems to work.
// Until I find a better way, this is how I get a single listchange event.
iValue = list.getSelectedIndex();
if(iValue != iSelIndex)
I'll have to try it in moveFocus as I'm guessing it doesn't get called as much as drawListRow.