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

disable unicode in password inputs

parent 2ca408fe
No related branches found
No related tags found
No related merge requests found
......@@ -22,8 +22,8 @@ use wasm_bindgen_futures::JsFuture;
use crate::{
get_node_cursor_pos, get_timestamp, get_x_offset_center, get_y_offset_center,
save_edit_history, CosmicAttrs, CosmicEditHistory, CosmicEditor, CosmicFontSystem,
CosmicMaxChars, CosmicMaxLines, CosmicTextChanged, CosmicTextPosition, Focus, ReadOnly,
XOffset,
CosmicMaxChars, CosmicMaxLines, CosmicTextChanged, CosmicTextPosition, Focus, PasswordInput,
ReadOnly, XOffset,
};
#[derive(Resource)]
......@@ -227,6 +227,7 @@ pub(crate) fn input_kb(
&CosmicMaxChars,
Entity,
Option<&ReadOnly>,
Option<&PasswordInput>,
)>,
mut evw_changed: EventWriter<CosmicTextChanged>,
mut font_system: ResMut<CosmicFontSystem>,
......@@ -234,8 +235,16 @@ pub(crate) fn input_kb(
mut edits_duration: Local<Option<Duration>>,
_channel: Option<Res<WasmPasteAsyncChannel>>,
) {
for (mut editor, mut edit_history, attrs, max_lines, max_chars, entity, readonly_opt) in
&mut cosmic_edit_query.iter_mut()
for (
mut editor,
mut edit_history,
attrs,
max_lines,
max_chars,
entity,
readonly_opt,
password_opt,
) in &mut cosmic_edit_query.iter_mut()
{
if active_editor.0 != Some(entity) {
continue;
......@@ -425,6 +434,10 @@ pub(crate) fn input_kb(
editor.0.action(&mut font_system.0, Action::Insert(c));
}
} else {
if password_opt.is_some() && c.len_utf8() > 1 {
println!("Cannot input multi-byte char '{}' to password field! See https://github.com/StaffEngineer/bevy_cosmic_edit/pull/99#issuecomment-1782607486",c);
continue;
}
editor.0.action(&mut font_system.0, Action::Insert(c));
}
}
......@@ -496,6 +509,10 @@ pub(crate) fn input_kb(
}
editor.0.action(&mut font_system.0, Action::Backspace);
} else if !command && (max_chars.0 == 0 || editor.get_text().len() < max_chars.0) {
if password_opt.is_some() && char_ev.char.len_utf8() > 1 {
println!("Cannot input multi-byte char '{}' to password field! See https://github.com/StaffEngineer/bevy_cosmic_edit/pull/99#issuecomment-1782607486",char_ev.char);
continue;
}
editor
.0
.action(&mut font_system.0, Action::Insert(char_ev.char));
......@@ -695,6 +712,10 @@ pub fn poll_wasm_paste(
editor.0.action(&mut font_system.0, Action::Insert(c));
}
} else {
if password_opt.is_some() && char_ev.char.len_utf8() > 1 {
println!("Cannot input multi-byte char '{}' to password field! See https://github.com/StaffEngineer/bevy_cosmic_edit/pull/99#issuecomment-1782607486",char_ev.char);
continue;
}
editor.0.action(&mut font_system.0, Action::Insert(c));
}
}
......
......@@ -506,6 +506,7 @@ pub(crate) fn hide_password_text(
mut editor_q: Query<(Entity, &mut CosmicEditor, &CosmicAttrs, &PasswordInput)>,
mut font_system: ResMut<CosmicFontSystem>,
mut password_input_states: ResMut<PasswordStates>,
active_editor: Res<Focus>,
) {
for (entity, mut cosmic_editor, attrs, password) in editor_q.iter_mut() {
let text = cosmic_editor.get_text();
......@@ -537,13 +538,15 @@ pub(crate) fn hide_password_text(
cursor.index *= char_len;
if cosmic_editor.0.buffer().lines[0].layout_opt().is_some() {
let lc = cosmic_editor.0.buffer().layout_cursor(&cursor);
cosmic_editor.0.set_select_opt(select_opt);
println!("{:?}", lc.glyph);
// Fixes stuck cursor on password inputs
if let Some(active) = active_editor.0 {
if entity != active {
cursor.color = Some(cosmic_text::Color::rgba(0, 0, 0, 0));
}
}
cosmic_editor.0.set_select_opt(select_opt);
cosmic_editor.0.set_cursor(cursor);
}
......
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