recursively trigger events on child views. in proper top-down order

note: the ordering of when it's triggered is important here so it's bad if someone messes it up one day :)