mirror of
https://github.com/servo/servo.git
synced 2025-07-23 23:33:43 +01:00
ISSUE-20455: introduce stronger types for textinput indexing
This commit is contained in:
parent
ce93e017c6
commit
14c8bbb49d
5 changed files with 570 additions and 324 deletions
|
@ -15,7 +15,7 @@ use crate::dom::bindings::str::DOMString;
|
|||
use crate::dom::event::{EventBubbles, EventCancelable};
|
||||
use crate::dom::eventtarget::EventTarget;
|
||||
use crate::dom::node::{window_from_node, Node, NodeDamage};
|
||||
use crate::textinput::{SelectionDirection, SelectionState, TextInput};
|
||||
use crate::textinput::{SelectionDirection, SelectionState, TextInput, UTF8Bytes};
|
||||
use script_traits::ScriptToConstellationChan;
|
||||
|
||||
pub trait TextControlElement: DerivedFrom<EventTarget> + DerivedFrom<Node> {
|
||||
|
@ -177,7 +177,8 @@ impl<'a, E: TextControlElement> TextControlSelection<'a, E> {
|
|||
// change the selection state in order to replace the text in the range.
|
||||
let original_selection_state = self.textinput.borrow().selection_state();
|
||||
|
||||
let content_length = self.textinput.borrow().len() as u32;
|
||||
let UTF8Bytes(content_length) = self.textinput.borrow().len_utf8();
|
||||
let content_length = content_length as u32;
|
||||
|
||||
// Step 5
|
||||
if start > content_length {
|
||||
|
@ -262,11 +263,13 @@ impl<'a, E: TextControlElement> TextControlSelection<'a, E> {
|
|||
}
|
||||
|
||||
fn start(&self) -> u32 {
|
||||
self.textinput.borrow().selection_start_offset() as u32
|
||||
let UTF8Bytes(offset) = self.textinput.borrow().selection_start_offset();
|
||||
offset as u32
|
||||
}
|
||||
|
||||
fn end(&self) -> u32 {
|
||||
self.textinput.borrow().selection_end_offset() as u32
|
||||
let UTF8Bytes(offset) = self.textinput.borrow().selection_end_offset();
|
||||
offset as u32
|
||||
}
|
||||
|
||||
fn direction(&self) -> SelectionDirection {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue