In particular, this fixes an issue where the range could be wrong
just after the widget is created, but the page it is not is not shown
yet (so there hasn't been a resize event yet).
Also makes for more consistent scroll wheel and arrow key behavior,
as it is not longer dependent on widget size.