in src/platform_impl/web/web_sys/scaling.rs [28:52]
fn new<F>(handler: F) -> Rc<RefCell<Self>>
where
F: 'static + FnMut(ScaleChangeArgs),
{
let current_scale = super::scale_factor();
let new_self = Rc::new(RefCell::new(Self {
callback: Box::new(handler),
mql: None,
last_scale: current_scale,
}));
let weak_self = Rc::downgrade(&new_self);
let closure = Closure::wrap(Box::new(move |event: MediaQueryListEvent| {
if let Some(rc_self) = weak_self.upgrade() {
rc_self.borrow_mut().handler(event);
}
}) as Box<dyn FnMut(_)>);
let mql = Self::create_mql(closure);
{
let mut borrowed_self = new_self.borrow_mut();
borrowed_self.mql = mql;
}
new_self
}