diff --git a/src/widgets/text_box.rs b/src/widgets/text_box.rs index ebb5631a8c540d2fe92a6715464d8a5ea85933c2..cb741e1c8f6c9ac072385b478f5a711bc8878545 100644 --- a/src/widgets/text_box.rs +++ b/src/widgets/text_box.rs @@ -121,9 +121,22 @@ pub fn text_box_render( } } + let style_font = styles.font.clone(); + if is_different { if let Ok(mut state) = state_query.p1().get_mut(state_entity) { state.current_value = text_box.value.clone(); + // Update graphemes + set_graphemes(&mut state, &font_assets, &font_mapping, &style_font); + + state.cursor_position = state.graphemes.len(); + + set_new_cursor_position( + &mut state, + &font_assets, + &font_mapping, + &style_font, + ); } } @@ -161,7 +174,6 @@ pub fn text_box_render( }; let cloned_on_change = on_change.clone(); - let style_font = styles.font.clone(); *on_event = OnEvent::new( move |In((event_dispatcher_context, _, mut event, _entity)): In<(