The coordinates carried with the events are mapped to the children coordinate space, not their parent's. You should either do the mapping yourself in the event filter or forward the events to methods different than the original event handlers for the parent.

Anyway, the proper way to do it would be to ignore the events in the children so that they are forwarded to the parent and caught there. Looks like you are trying to emulate this behaviour when it's not required, especially that events get ignored by default if there is no event handler for them implemented and propagated to the parent.