mirror of
https://github.com/rust-windowing/winit.git
synced 2026-06-27 15:13:13 -04:00
Properly remove window mouse event listeners (#2632)
* Properly remove window mouse event listeners * Update CHANGELOG.md * Fix formatting Co-authored-by: Mads Marquart <mads@marquart.dk>
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
use wasm_bindgen::{prelude::Closure, JsCast};
|
||||
use web_sys::{AddEventListenerOptions, EventTarget};
|
||||
use web_sys::{AddEventListenerOptions, EventListenerOptions, EventTarget};
|
||||
|
||||
pub(super) struct EventListenerHandle<T: ?Sized> {
|
||||
target: EventTarget,
|
||||
event_type: &'static str,
|
||||
listener: Closure<T>,
|
||||
options: EventListenerOptions,
|
||||
}
|
||||
|
||||
impl<T: ?Sized> EventListenerHandle<T> {
|
||||
@@ -20,6 +21,7 @@ impl<T: ?Sized> EventListenerHandle<T> {
|
||||
target,
|
||||
event_type,
|
||||
listener,
|
||||
options: EventListenerOptions::new(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +46,7 @@ impl<T: ?Sized> EventListenerHandle<T> {
|
||||
target,
|
||||
event_type,
|
||||
listener,
|
||||
options: options.clone().unchecked_into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,9 +54,10 @@ impl<T: ?Sized> EventListenerHandle<T> {
|
||||
impl<T: ?Sized> Drop for EventListenerHandle<T> {
|
||||
fn drop(&mut self) {
|
||||
self.target
|
||||
.remove_event_listener_with_callback(
|
||||
.remove_event_listener_with_callback_and_event_listener_options(
|
||||
self.event_type,
|
||||
self.listener.as_ref().unchecked_ref(),
|
||||
&self.options,
|
||||
)
|
||||
.unwrap_or_else(|e| {
|
||||
web_sys::console::error_2(
|
||||
|
||||
Reference in New Issue
Block a user