diff --git a/Cargo.lock b/Cargo.lock index e6b4419591ec9b40f5cf6af30ab9617c912ad383..61fd581a803ad968ffac6c85ae31cb716a70d7a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -388,7 +388,7 @@ dependencies = [ [[package]] name = "bevy_cosmic_edit" -version = "0.10.0" +version = "0.10.1" dependencies = [ "arboard", "bevy", diff --git a/Cargo.toml b/Cargo.toml index a670eb40661a93ee05c5c4cdb549d28f4293d404..f9e4a83654cd2f70b2a6c255fec292c644c4e6ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_cosmic_edit" -version = "0.10.0" +version = "0.10.1" edition = "2021" license = "MIT OR Apache-2.0" description = "Bevy cosmic-text multiline text input" diff --git a/examples/font_per_widget.rs b/examples/font_per_widget.rs index 50d0843d14160b3d9d57981b18dd49eec0439a10..c3580c5c697ce56032909789a7118166dd29de6c 100644 --- a/examples/font_per_widget.rs +++ b/examples/font_per_widget.rs @@ -249,12 +249,13 @@ fn setup( let mut attrs_2 = cosmic_text::Attrs::new(); attrs_2 = attrs_2.family(cosmic_text::Family::Name("Times New Roman")); + attrs_2.color_opt = Some(cosmic_text::Color::rgb(0x94, 0x00, 0xD3)); let cosmic_edit_2 = CosmicEditUiBundle { cosmic_attrs: CosmicAttrs(AttrsOwned::new(attrs_2)), cosmic_metrics: CosmicMetrics { - font_size: 14., - line_height: 18., + font_size: 28., + line_height: 36., scale_factor: primary_window.scale_factor() as f32, }, text_position: CosmicTextPosition::Center, diff --git a/src/lib.rs b/src/lib.rs index 9f09020f745a850aa8d7849c2bea3b6814fcb61f..2d836b852a5b1dcfc9346b1d00c00739925257f7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -389,6 +389,7 @@ impl Plugin for CosmicEditPlugin { .before(cosmic_edit_set_redraw) .before(on_scale_factor_change), cosmic_edit_redraw_buffer.before(on_scale_factor_change), + blink_cursor, ), ) .init_resource::<ActiveEditor>() @@ -1177,6 +1178,31 @@ fn cosmic_edit_redraw_buffer_ui( } } +fn blink_cursor( + mut visible: Local<bool>, + mut timer: Local<Option<Timer>>, + time: Res<Time>, + 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() { + 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); + } +} + fn cosmic_edit_redraw_buffer( windows: Query<&Window, With<PrimaryWindow>>, mut images: ResMut<Assets<Image>>,