Skip to content
Snippets Groups Projects
Commit 47e689a6 authored by sam edelsten's avatar sam edelsten
Browse files

show cursor only on active editor

parent 76eb518a
No related branches found
No related tags found
No related merge requests found
......@@ -390,6 +390,7 @@ impl Plugin for CosmicEditPlugin {
.before(on_scale_factor_change),
cosmic_edit_redraw_buffer.before(on_scale_factor_change),
blink_cursor,
hide_inactive_cursor,
),
)
.init_resource::<ActiveEditor>()
......@@ -1182,24 +1183,57 @@ fn blink_cursor(
mut visible: Local<bool>,
mut timer: Local<Option<Timer>>,
time: Res<Time>,
active_editor: ResMut<ActiveEditor>,
mut cosmic_editor_q: Query<(&mut CosmicEditor, &BackgroundColor), Without<ReadOnly>>,
) {
let timer = timer.get_or_insert_with(|| Timer::from_seconds(0.53, TimerMode::Repeating));
timer.tick(time.delta());
if !timer.just_finished() {
if let Some(e) = active_editor.entity {
match cosmic_editor_q.get_mut(e) {
Ok((mut editor, bg_color)) => {
let timer =
timer.get_or_insert_with(|| Timer::from_seconds(0.53, TimerMode::Repeating));
timer.tick(time.delta());
if !timer.just_finished() && !active_editor.is_changed() {
return;
}
*visible = !*visible;
// always start cursor visible on focus
if active_editor.is_changed() {
*visible = true;
timer.set_elapsed(Duration::from_secs(0));
}
let mut cursor = editor.0.cursor();
let new_color = if *visible {
None
} else {
Some(bevy_color_to_cosmic(bg_color.0))
};
cursor.color = new_color;
editor.0.set_cursor(cursor);
editor.0.buffer_mut().set_redraw(true);
}
Err(_) => {}
}
}
}
fn hide_inactive_cursor(
mut cosmic_editor_q: Query<(Entity, &mut CosmicEditor, &BackgroundColor)>,
active_editor: Res<ActiveEditor>,
) {
if !active_editor.is_changed() || active_editor.entity.is_none() {
return;
}
*visible = !*visible;
for (mut editor, bg_color) in &mut cosmic_editor_q.iter_mut() {
let mut cursor = editor.0.cursor();
let new_color = if *visible {
None
} else {
Some(bevy_color_to_cosmic(bg_color.0))
};
cursor.color = new_color;
editor.0.set_cursor(cursor);
editor.0.buffer_mut().set_redraw(true);
for (e, mut editor, bg_color) in &mut cosmic_editor_q.iter_mut() {
if e != active_editor.entity.unwrap() {
let mut cursor = editor.0.cursor();
cursor.color = Some(bevy_color_to_cosmic(bg_color.0));
editor.0.set_cursor(cursor);
editor.0.buffer_mut().set_redraw(true);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment