diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 9da0bd4e6c3..e12ad21631a 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -2647,12 +2647,18 @@ impl VirtualMethods for HTMLInputElement { point_in_target, CanGc::note(), ); - if let Some(i) = index { - self.textinput.borrow_mut().set_edit_point_index(i); - // trigger redraw - self.upcast::().dirty(NodeDamage::OtherNodeDamage); - event.PreventDefault(); - } + // Position the caret at the click position or at the end of the current + // value. + let edit_point_index = match index { + Some(i) => i, + None => self.textinput.borrow().char_count(), + }; + self.textinput + .borrow_mut() + .set_edit_point_index(edit_point_index); + // trigger redraw + self.upcast::().dirty(NodeDamage::OtherNodeDamage); + event.PreventDefault(); } } }