Generalized `on_screen_change`