From efb233c201fe37a1f30e196c661182c3cbfaf32f Mon Sep 17 00:00:00 2001 From: StaffEngineer <111751109+StaffEngineer@users.noreply.github.com> Date: Sun, 1 Oct 2023 08:44:52 +0100 Subject: [PATCH] move cursor on set_text (#60) --- src/lib.rs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 44eb743..747dcb8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -104,6 +104,7 @@ impl CosmicEditor { attrs.as_attrs(), Shaping::Advanced, ); + editor.action(font_system, Action::BufferEnd); } CosmicText::MultiStyle(lines) => { for line in lines { @@ -192,15 +193,6 @@ fn update_buffer_text( } } -fn update_cursor_position( - mut editor_q: Query<&mut CosmicEditor, Added<CosmicText>>, - mut font_system: ResMut<CosmicFontSystem>, -) { - for mut editor in editor_q.iter_mut() { - editor.0.action(&mut font_system.0, Action::BufferEnd); - } -} - #[derive(Component)] pub struct CosmicAttrs(pub AttrsOwned); @@ -382,7 +374,7 @@ impl Plugin for CosmicEditPlugin { .add_systems( PreUpdate, ( - (update_buffer_text, update_cursor_position).chain(), + update_buffer_text, cosmic_edit_bevy_events, blink_cursor, freeze_cursor_blink, @@ -1443,16 +1435,23 @@ fn freeze_cursor_blink( } fn hide_inactive_or_readonly_cursor( - mut cosmic_editor_q: Query<(Entity, &mut CosmicEditor, Option<&ReadOnly>)>, + mut cosmic_editor_q_readonly: Query<&mut CosmicEditor, With<ReadOnly>>, + mut cosmic_editor_q_editable: Query<(Entity, &mut CosmicEditor), Without<ReadOnly>>, active_editor: Res<Focus>, ) { - if !active_editor.is_changed() || active_editor.0.is_none() { + for mut editor in &mut cosmic_editor_q_readonly.iter_mut() { + let mut cursor = editor.0.cursor(); + cursor.color = Some(cosmic_text::Color::rgba(0, 0, 0, 0)); + editor.0.set_cursor(cursor); + editor.0.buffer_mut().set_redraw(true); + } + + if active_editor.is_changed() || active_editor.0.is_none() { return; } - for (e, mut editor, readonly_maybe) in &mut cosmic_editor_q.iter_mut() { - let readonly = readonly_maybe.is_some(); - if e != active_editor.0.unwrap() || readonly { + for (e, mut editor) in &mut cosmic_editor_q_editable.iter_mut() { + if e != active_editor.0.unwrap() { let mut cursor = editor.0.cursor(); cursor.color = Some(cosmic_text::Color::rgba(0, 0, 0, 0)); editor.0.set_cursor(cursor); -- GitLab