Propagate has_changes, but use it only as such, do not affect visibility_state