| 281 | } |
| 282 | |
| 283 | fn textinput(&self, event: &mut TextEvent) { |
| 284 | // self.base.textinput(event); |
| 285 | |
| 286 | let index = self.state.borrow().index; |
| 287 | let bef_str = self.before(index as usize); |
| 288 | let aft_str = self.after(index as usize); |
| 289 | let new_str = format!("{}{}{}", bef_str, event.text, aft_str); |
| 290 | |
| 291 | match event.event_type { |
| 292 | TextEventType::Edit => { |
| 293 | let mut state = self.state.borrow_mut(); |
| 294 | state.composition = event.text.clone(); |
| 295 | state.composition_start = event.start; |
| 296 | state.composition_length = event.length; |
| 297 | |
| 298 | self.refresh(state.edit.clone(), true, false); |
| 299 | } |
| 300 | TextEventType::Input => { |
| 301 | let mut state = self.state.borrow_mut(); |
| 302 | state.composition = String::new(); |
| 303 | state.composition_start = 0; |
| 304 | state.composition_length = 0; |
| 305 | |
| 306 | if let Some(ref filter) = self.filter { |
| 307 | if !filter(event.text.clone(), new_str.clone(), state.edit.clone()) { |
| 308 | return; |
| 309 | } |
| 310 | } |
| 311 | |
| 312 | let index = state.index; |
| 313 | self.state.borrow_mut().index = index + event.text.len() as i32; |
| 314 | self.refresh(new_str, true, true); |
| 315 | } |
| 316 | _ => {} |
| 317 | } |
| 318 | } |
| 319 | |
| 320 | fn keydown(&self, event: &mut KeyEvent) { |
| 321 | let state = self.state.borrow(); |