Skip to content

Commit

Permalink
Remove some unnecessary allocations in text input handling.
Browse files Browse the repository at this point in the history
  • Loading branch information
aweinstock314 committed Jun 11, 2015
1 parent a3eb253 commit b148672
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions components/script/textinput.rs
Expand Up @@ -134,19 +134,15 @@ impl<T: ClipboardProvider> TextInput<T> {

/// Insert a character at the current editing point
pub fn insert_char(&mut self, ch: char) {
if self.selection_begin.is_none() {
self.selection_begin = Some(self.edit_point);
}
self.replace_selection(ch.to_string());
self.insert_string(ch.to_string());
}

/// Insert a string at the current editing point
fn insert_string(&mut self, s: &str) {
// it looks like this could be made performant by avoiding some redundant
// selection-related checks, but use the simple implementation for now
for ch in s.chars() {
self.insert_char(ch);
fn insert_string<S: Into<String>>(&mut self, s: S) {
if self.selection_begin.is_none() {
self.selection_begin = Some(self.edit_point);
}
self.replace_selection(s.into());
}

pub fn get_sorted_selection(&self) -> (TextPoint, TextPoint) {
Expand Down Expand Up @@ -316,7 +312,7 @@ impl<T: ClipboardProvider> TextInput<T> {
},
Key::V if is_control_key(mods) => {
let contents = self.clipboard_provider.clipboard_contents();
self.insert_string(&contents);
self.insert_string(contents);
KeyReaction::DispatchInput
},
_ if is_printable_key(key) => {
Expand Down

0 comments on commit b148672

Please sign in to comment.