diff --git a/src/widget/text_input/input.rs b/src/widget/text_input/input.rs index 62193d9..570a791 100644 --- a/src/widget/text_input/input.rs +++ b/src/widget/text_input/input.rs @@ -1429,13 +1429,12 @@ where return event::Status::Captured; } - + let mut is_trailing_clicked = false; if is_editable { if let Some(trailing_layout) = trailing_icon_layout { - let is_trailing_clicked = - cursor.is_over(trailing_layout.bounds()) && on_toggle_edit.is_some(); + is_trailing_clicked = cursor.is_over(trailing_layout.bounds()); - if is_trailing_clicked { + if is_trailing_clicked && on_toggle_edit.is_some() { let Some(pos) = cursor.position() else { return event::Status::Ignored; }; @@ -1472,6 +1471,14 @@ where } } } + + if !is_trailing_clicked && click_position.is_none() { + state.is_focused = None; + state.dragging_state = None; + state.is_pasting = None; + + state.keyboard_modifiers = keyboard::Modifiers::default(); + } } Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) | Event::Touch(touch::Event::FingerLifted { .. } | touch::Event::FingerLost { .. }) => {