I think we can just skip the event system and set projectInfo.dirty = true;