diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/document.rs | 1 | ||||
-rwxr-xr-x | components/script/dom/htmlinputelement.rs | 25 | ||||
-rwxr-xr-x | components/script/dom/htmltextareaelement.rs | 21 |
3 files changed, 23 insertions, 24 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 0f427cdb069..f263eee9210 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1334,7 +1334,6 @@ impl Document { let ev = event.upcast::<Event>(); ev.fire(target); cancel_state = ev.get_cancel_state(); - // TODO: if keypress event is canceled, prevent firing input events } if cancel_state == EventDefault::Allowed { diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 8784c1f39df..d133efd5e14 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -1105,17 +1105,6 @@ impl VirtualMethods for HTMLInputElement { DispatchInput => { self.value_changed.set(true); self.update_placeholder_shown_state(); - - if event.IsTrusted() { - let window = window_from_node(self); - let _ = window.user_interaction_task_source().queue_event( - &self.upcast(), - atom!("input"), - EventBubbles::Bubbles, - EventCancelable::NotCancelable, - &window); - } - self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); event.mark_as_handled(); } @@ -1126,7 +1115,19 @@ impl VirtualMethods for HTMLInputElement { Nothing => (), } } - } + } else if event.type_() == atom!("keypress") && !event.DefaultPrevented() && + (self.input_type.get() == InputType::InputText || + self.input_type.get() == InputType::InputPassword) { + if event.IsTrusted() { + let window = window_from_node(self); + let _ = window.user_interaction_task_source() + .queue_event(&self.upcast(), + atom!("input"), + EventBubbles::Bubbles, + EventCancelable::NotCancelable, + &window); + } + } } } diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 74db028859a..2582b13514a 100755 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -403,17 +403,6 @@ impl VirtualMethods for HTMLTextAreaElement { KeyReaction::DispatchInput => { self.value_changed.set(true); self.update_placeholder_shown_state(); - - if event.IsTrusted() { - let window = window_from_node(self); - let _ = window.user_interaction_task_source().queue_event( - &self.upcast(), - atom!("input"), - EventBubbles::Bubbles, - EventCancelable::NotCancelable, - &window); - } - self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); event.mark_as_handled(); } @@ -424,6 +413,16 @@ impl VirtualMethods for HTMLTextAreaElement { KeyReaction::Nothing => (), } } + } else if event.type_() == atom!("keypress") && !event.DefaultPrevented() { + if event.IsTrusted() { + let window = window_from_node(self); + let _ = window.user_interaction_task_source() + .queue_event(&self.upcast(), + atom!("input"), + EventBubbles::Bubbles, + EventCancelable::NotCancelable, + &window); + } } } } |