mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 07:47:37 +00:00
LibWeb: Make the Window object "inherit" from EventTarget :^)
Since Web::Bindings::WindowObject inherits from JS::GlobalObject, it cannot also inherit from Web::Bindings::EventTargetWrapper. However, that's not actually necessary. Instead, we simply set the Window object's prototype to the EventTargetPrototype, and add a little extra branch in the impl_from() function that turns the JS "this" value into a DOM::EventTarget*. With this, you can now call window.addEventListener()! Very cool :^) Fixes #4758.
This commit is contained in:
parent
fd83918476
commit
0639e77898
13 changed files with 26 additions and 14 deletions
|
@ -51,7 +51,7 @@ public:
|
|||
void remove_from_event_listener_list(NonnullRefPtr<EventListener>);
|
||||
|
||||
virtual bool dispatch_event(NonnullRefPtr<Event>) = 0;
|
||||
virtual Bindings::EventTargetWrapper* create_wrapper(JS::GlobalObject&) = 0;
|
||||
virtual JS::Object* create_wrapper(JS::GlobalObject&) = 0;
|
||||
Bindings::ScriptExecutionContext* script_execution_context() { return m_script_execution_context; }
|
||||
|
||||
virtual EventTarget* get_parent(const Event&) { return nullptr; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue