Don't update cursor in the timer, just use state.