offsetChanged and viewportChanged events