If that's the case, shouldn't we modify BView::ScrollBy so it just wraps a call to the virtual version? AFAIK the virtual hook should be called in all cases, otherwise the app can't always get correct behavior, since ScrollBy is not overrideable. Replacing ScrollBy with ScrollTo in ValueChanged does indeed make BCLV behave correctly here btw.