Parcourir la source

LibWeb: Add EventTarget.removeEventListener()

Andreas Kling il y a 5 ans
Parent
commit
244b243d22

+ 7 - 0
Libraries/LibWeb/DOM/EventTarget.cpp

@@ -42,4 +42,11 @@ void EventTarget::add_event_listener(const FlyString& event_name, NonnullRefPtr<
     m_listeners.append({ event_name, move(listener) });
 }
 
+void EventTarget::remove_event_listener(const FlyString& event_name, NonnullRefPtr<EventListener> listener)
+{
+    m_listeners.remove_first_matching([&](auto& entry) {
+        return entry.event_name == event_name && &entry.listener->function() == &listener->function();
+    });
+}
+
 }

+ 1 - 0
Libraries/LibWeb/DOM/EventTarget.h

@@ -44,6 +44,7 @@ public:
     void unref() { unref_event_target(); }
 
     void add_event_listener(const FlyString& event_name, NonnullRefPtr<EventListener>);
+    void remove_event_listener(const FlyString& event_name, NonnullRefPtr<EventListener>);
 
     virtual void dispatch_event(NonnullRefPtr<Event>) = 0;
 

+ 1 - 0
Libraries/LibWeb/DOM/EventTarget.idl

@@ -1,5 +1,6 @@
 interface EventTarget {
 
     void addEventListener(DOMString type, EventListener? callback);
+    void removeEventListener(DOMString type, EventListener? callback);
 
 }