diff options
Diffstat (limited to 'components/script/dom/htmldetailselement.rs')
-rw-r--r-- | components/script/dom/htmldetailselement.rs | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/components/script/dom/htmldetailselement.rs b/components/script/dom/htmldetailselement.rs index 8b8735ca0d6..01286dd2265 100644 --- a/components/script/dom/htmldetailselement.rs +++ b/components/script/dom/htmldetailselement.rs @@ -14,10 +14,10 @@ use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; -use script_thread::ScriptThreadEventCategory::DomEvent; -use script_thread::{CommonScriptMsg, Runnable}; +use script_thread::{MainThreadScriptChan, Runnable, ScriptChan}; use std::cell::Cell; use string_cache::Atom; +use task_source::dom_manipulation::DOMManipulationTask; use util::str::DOMString; #[dom_struct] @@ -69,7 +69,17 @@ impl VirtualMethods for HTMLDetailsElement { if attr.local_name() == &atom!("open") { let counter = self.toggle_counter.get() + 1; self.toggle_counter.set(counter); - ToggleEventRunnable::send(&self, counter); + + let window = window_from_node(self); + let window = window.r(); + let task_source = window.dom_manipulation_task_source(); + let chan = MainThreadScriptChan(window.main_thread_script_chan().clone()).clone(); + let details = Trusted::new(self, chan.clone()); + let runnable = box ToggleEventRunnable { + element: details, + toggle_number: counter + }; + let _ = task_source.queue(DOMManipulationTask::FireToggleEvent(runnable)); } } } @@ -79,20 +89,6 @@ pub struct ToggleEventRunnable { toggle_number: u32 } -impl ToggleEventRunnable { - pub fn send(node: &HTMLDetailsElement, toggle_number: u32) { - let window = window_from_node(node); - let window = window.r(); - let chan = window.dom_manipulation_task_source(); - let handler = Trusted::new(node, chan.clone()); - let dispatcher = ToggleEventRunnable { - element: handler, - toggle_number: toggle_number, - }; - let _ = chan.send(CommonScriptMsg::RunnableMsg(DomEvent, box dispatcher)); - } -} - impl Runnable for ToggleEventRunnable { fn handler(self: Box<ToggleEventRunnable>) { let target = self.element.root(); |