lionz
From the manual,
If a trigger is in a sub-event, all of its parent event's conditions must be true at the time the trigger fires, otherwise the event will not run.
I do remember seeing a post mentioning that triggers should be kept at the top level. However, based on testing and the current manual, I don't think moving the trigger to the top level is necessarily the best solution in this case.
And yes, filtering/picking first can work better when you're dealing with two different object types rather than instances of the same object type, so that may have been what was happening in your case.