viewport: handle view scrolling