diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/layout/wrapper.rs | 22 | ||||
-rw-r--r-- | components/script/dom/htmlinputelement.rs | 10 |
2 files changed, 19 insertions, 13 deletions
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 678ebd63582..17102f0095d 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -954,18 +954,20 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { let insertion_point = unsafe { input.get_insertion_point_for_layout() }; - let text = unsafe { - input.get_value_for_layout() - }; - - let mut character_count = 0; - for (character_index, _) in text.char_indices() { - if character_index == insertion_point.index { - return Some(CharIndex(character_count)) + if let Some(insertion_point) = insertion_point { + let text = unsafe { + input.get_value_for_layout() + }; + + let mut character_count = 0; + for (character_index, _) in text.char_indices() { + if character_index == insertion_point.index { + return Some(CharIndex(character_count)) + } + character_count += 1 } - character_count += 1 + return Some(CharIndex(character_count)) } - return Some(CharIndex(character_count)) } None } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 40020a74d14..a07529ebbec 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -143,7 +143,7 @@ pub trait LayoutHTMLInputElementHelpers { #[allow(unsafe_code)] unsafe fn get_size_for_layout(self) -> u32; #[allow(unsafe_code)] - unsafe fn get_insertion_point_for_layout(self) -> TextPoint; + unsafe fn get_insertion_point_for_layout(self) -> Option<TextPoint>; } pub trait RawLayoutHTMLInputElementHelpers { @@ -197,8 +197,12 @@ impl LayoutHTMLInputElementHelpers for LayoutJS<HTMLInputElement> { #[allow(unrooted_must_root)] #[allow(unsafe_code)] - unsafe fn get_insertion_point_for_layout(self) -> TextPoint { - (*self.unsafe_get()).textinput.borrow_for_layout().edit_point + unsafe fn get_insertion_point_for_layout(self) -> Option<TextPoint> { + match (*self.unsafe_get()).input_type.get() { + InputType::InputText | InputType::InputPassword => + Some((*self.unsafe_get()).textinput.borrow_for_layout().edit_point), + _ => None + } } } |