Calling setRange after setCurrent overwrites currently selected item

When calling setRange, it always sets the currently selected value to the minimum. I would suggest that it only overwrites if the current is out of the new range. If current is over, set to end, and if below, set to minimum.