I accidentally bumped into this function, which really upgraded my ListBox.
One thing it is missing though, is the ability to set the speed of the scrolling to a lower one so it will scroll smoothly.
It calls viewport->scrollToEnsureRowIsOnscreen() so it probably should be a Viewport feature.