diff options
author | Matt McCoy <mattnenterprise@yahoo.com> | 2015-03-11 15:56:57 -0400 |
---|---|---|
committer | Matt McCoy <mattnenterprise@yahoo.com> | 2015-03-17 17:05:41 -0400 |
commit | a481c8f28a8db9002190358d9c4b986c9098f101 (patch) | |
tree | 93835ab3d77db7cf162722cbef6e26f5086f9fa5 /components/script | |
parent | bfa4fe762b105a66f2d9647f5a763f28ebe8084c (diff) | |
download | servo-a481c8f28a8db9002190358d9c4b986c9098f101.tar.gz servo-a481c8f28a8db9002190358d9c4b986c9098f101.zip |
#4508 Only dispatching input event when the textarea receives keyboard input and not for javascript
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/htmltextareaelement.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index a33de9da8ab..7aad495b1bf 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -27,7 +27,7 @@ use dom::node::{DisabledStateHelpers, Node, NodeHelpers, NodeDamage, NodeTypeId} use dom::node::{document_from_node, window_from_node}; use textinput::{TextInput, Lines, KeyReaction}; use dom::virtualmethods::VirtualMethods; -use script_task::{Runnable}; +use script_task::{ScriptMsg, Runnable}; use util::str::DOMString; use string_cache::Atom; @@ -345,8 +345,18 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> { match self.textinput.borrow_mut().handle_keydown(event) { KeyReaction::TriggerDefaultAction => (), KeyReaction::DispatchInput => { - self.force_relayout(); self.value_changed.set(true); + + let window = window_from_node(*self).root(); + let window = window.r(); + let chan = window.script_chan(); + let handler = Trusted::new(window.get_cx(), *self , chan.clone()); + let dispatcher = TrustedHTMLTextAreaElement { + element: handler, + }; + chan.send(ScriptMsg::RunnableMsg(box dispatcher)); + + self.force_relayout(); } KeyReaction::Nothing => (), } |