fix: avoid focus effects if already focused

This commit is contained in:
Ashley Wulber 2025-10-20 11:47:37 -04:00 committed by Ashley Wulber
parent 76c1897d4d
commit 529eeebaeb

View file

@ -656,7 +656,7 @@ where
if index == old_value.len() { if index == old_value.len() {
state.cursor.move_to(self.value.len()); state.cursor.move_to(self.value.len());
} }
}; }
} }
if let Some(f) = state.is_focused.as_ref().filter(|f| f.focused) { if let Some(f) = state.is_focused.as_ref().filter(|f| f.focused) {
@ -2687,6 +2687,7 @@ impl State {
pub fn focus(&mut self) { pub fn focus(&mut self) {
let now = Instant::now(); let now = Instant::now();
LAST_FOCUS_UPDATE.with(|x| x.set(now)); LAST_FOCUS_UPDATE.with(|x| x.set(now));
let was_focused = self.is_focused.is_some_and(|f| f.focused);
self.is_read_only = false; self.is_read_only = false;
self.is_focused = Some(Focus { self.is_focused = Some(Focus {
updated_at: now, updated_at: now,
@ -2695,6 +2696,9 @@ impl State {
needs_update: false, needs_update: false,
}); });
if was_focused {
return;
}
if self.select_on_focus { if self.select_on_focus {
self.select_all() self.select_all()
} else { } else {