diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/mediaquerylist.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index c6e569b5e42..2545b911c7a 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -138,17 +138,23 @@ impl WeakMediaQueryListVec { /// Evaluate media query lists and report changes /// https://drafts.csswg.org/cssom-view/#evaluate-media-queries-and-report-changes pub fn evaluate_and_report_changes(&self) { + rooted_vec!(let mut mql_list); self.cell.borrow_mut().update(|mql| { let mql = mql.root().unwrap(); if let MediaQueryListMatchState::Changed(_) = mql.evaluate_changes() { - let event = MediaQueryListEvent::new(&mql.global(), - atom!("change"), - false, false, - mql.Media(), - mql.Matches()); - event.upcast::<Event>().fire(mql.upcast::<EventTarget>()); + // Recording list of changed Media Queries + mql_list.push(JS::from_ref(&*mql)); } }); + // Sending change events for all changed Media Queries + for mql in mql_list.iter() { + let event = MediaQueryListEvent::new(&mql.global(), + atom!("change"), + false, false, + mql.Media(), + mql.Matches()); + event.upcast::<Event>().fire(mql.upcast::<EventTarget>()); + } } } |