[PATCH 4/6] mshtml: Delegate event construction to functions by type.
Jacek Caban
jacek at codeweavers.com
Mon May 23 11:06:05 CDT 2022
Hi Gabriel,
On 5/23/22 17:22, Gabriel Ivăncescu wrote:
> Instead of hardcoding it, which will be necessary as the amount of event
> types implemented grows.
>
> Signed-off-by: Gabriel Ivăncescu<gabrielopcode at gmail.com>
> ---
> dlls/mshtml/htmlevent.c | 33 ++++++++++++++++++++++++---------
> 1 file changed, 24 insertions(+), 9 deletions(-)
>
> diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
> index f28dd63..c25b85f 100644
> --- a/dlls/mshtml/htmlevent.c
> +++ b/dlls/mshtml/htmlevent.c
> @@ -2373,6 +2373,26 @@ static BOOL check_event_iface(nsIDOMEvent *event, REFIID riid)
> return TRUE;
> }
>
> +static DOMEvent *message_event_ctor(nsIDOMEvent *nsevent, dispex_static_data_t **dispex_data)
> +{
> + DOMMessageEvent *message_event = heap_alloc_zero(sizeof(*message_event));
> + if(!message_event)
> + return NULL;
> +
> + message_event->IDOMMessageEvent_iface.lpVtbl = &DOMMessageEventVtbl;
> + message_event->event.query_interface = DOMMessageEvent_query_interface;
> + message_event->event.destroy = DOMMessageEvent_destroy;
> + *dispex_data = &DOMMessageEvent_dispex;
> + return &message_event->event;
> +}
> +
> +static const struct {
> + DOMEvent* (*proc)(nsIDOMEvent*,dispex_static_data_t**);
> + compat_mode_t min_mode;
> +} event_type_ctors[ARRAY_SIZE(event_types)] = {
> + [EVENT_TYPE_MESSAGE] = { message_event_ctor, COMPAT_MODE_QUIRKS },
> +};
While we may need something more generic at some point, this seems this
patch series just uses it just for two event types and it's not clear we
want to go in that direction. The way we handle DOMCustomEvent is
probably better in cases where it's possible. At this point you leave
out of generic mechanism, meaning that we will prefer to not use the new
mechanism anyway. I'd suggest to wait for more problematic cases before
having something like that.
Thanks,
Jacek
More information about the wine-devel
mailing list