From adb639a5350ea0eb4b9e2b394fe7b3a53a9ae782 Mon Sep 17 00:00:00 2001 From: sam edelsten <samedelsten1@gmail.com> Date: Wed, 1 May 2024 17:12:15 +0100 Subject: [PATCH] add tag component to disable user selection --- src/lib.rs | 3 +++ src/user_select.rs | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/user_select.rs diff --git a/src/lib.rs b/src/lib.rs index 3c1331d..dbbaa65 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,6 +88,7 @@ mod input; mod password; mod placeholder; mod render; +mod user_select; mod util; mod widget; @@ -109,6 +110,7 @@ pub use input::*; pub use password::*; pub use placeholder::*; pub use render::*; +pub use user_select::*; pub use util::*; pub use widget::*; @@ -132,6 +134,7 @@ impl Plugin for CosmicEditPlugin { PlaceholderPlugin, PasswordPlugin, EventsPlugin, + UserSelectPlugin, )) .insert_resource(CosmicFontSystem(font_system)); diff --git a/src/user_select.rs b/src/user_select.rs new file mode 100644 index 0000000..4569397 --- /dev/null +++ b/src/user_select.rs @@ -0,0 +1,21 @@ +use crate::*; +use bevy::prelude::*; + +pub(crate) struct UserSelectPlugin; + +impl Plugin for UserSelectPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Update, clear_selection.after(InputSet)); + } +} + +/// Tag component to disable user selection +/// Like CSS `user-select: none` https://developer.mozilla.org/en-US/docs/Web/CSS/user-select +#[derive(Component)] +pub struct UserSelectNone; + +fn clear_selection(mut q: Query<&mut CosmicEditor, With<UserSelectNone>>) { + for mut editor in q.iter_mut() { + editor.set_selection(cosmic_text::Selection::None); + } +} -- GitLab