Well, since I needed Shuffle to work correctly when changing filters, I made this modification to your code. I hope it doesn't bother you.
I guess it's not the right modification you would make, but for now it works for me. And it has been easier than I thought, I've only added five lines of code.
Your original code:
function _signals(signal_str)
{
switch(signal_str)
{
// ignore signals at start or end of list when looping is false
case "prev_game":
if(this._loop == false && fe.list.index == 0) return true;
break;
case "next_game":
if(this._loop == false && fe.list.index == fe.list.size-1) return true;
break;
// do not update selection for these signals
case "prev_letter":
case "next_letter":
case "random_game":
case "add_favourite":
case "prev_favourite":
case "next_favorite":
this._ignoreNewSelection = true;
break;
}
return false;
}
Modified code:
function _signals(signal_str)
{
switch(signal_str)
{
// ignore signals at start or end of list when looping is false
case "prev_game":
if(this._loop == false && fe.list.index == 0) return true;
break;
case "next_game":
if(this._loop == false && fe.list.index == fe.list.size-1) return true;
break;
case "prev_filter":
case "next_filter":
this._selected = 0;
fe.list.index = 0;
break;
// do not update selection for these signals
case "prev_letter":
case "next_letter":
case "random_game":
case "add_favourite":
case "prev_favourite":
case "next_favorite":
this._ignoreNewSelection = true;
break;
}
return false;
}
This fixes the problem with the filter change, but not with the letter change... which is not going well either.