It is for performance reasons that you store the scrollable parent in a widget field instead of recomputing it, right? Indeed, this reposition() method is called often, but maybe it would be worth checking if it really matters in practice. If the overhead is small, we could avoid storing this reference.