Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/uia_event.c:
- LIST_FOR_EACH_ENTRY_SAFE(sink_event, sink_event2, &sink_events, struct event_sink_event, event_sink_list_entry)
- {
list_remove(&sink_event->event_sink_list_entry);if (sink_event->args->simple_args.EventId == event->event_id){struct uia_elprov_event_data event_data = { sink_event->elprov, sink_event->args, TRUE };hr = uia_raise_elprov_event_callback(event, (void *)&event_data);if (FAILED(hr))WARN("uia_raise_elprov_event_callback failed with hr %#lx\n", hr);UiaNodeRelease(event_data.node);SafeArrayDestroy(event_data.rt_id);}
This doesn't make a lot of sense to me. Why does the IProxyProviderWinEventSink interface accept an event id if the "wrong" one is just going to be ignored?