diff options
Diffstat (limited to 'components/script/dom/htmlinputelement.rs')
-rwxr-xr-x | components/script/dom/htmlinputelement.rs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index eb344ef0a79..d133efd5e14 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -1105,28 +1105,29 @@ 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.PreventDefault(); + event.mark_as_handled(); } RedrawSelection => { self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); - event.PreventDefault(); + event.mark_as_handled(); } 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); + } + } } } |