diff --git a/crates/ui-egui/src/panels/color.rs b/crates/ui-egui/src/panels/color.rs index f9567e988..00e32808a 100644 --- a/crates/ui-egui/src/panels/color.rs +++ b/crates/ui-egui/src/panels/color.rs @@ -197,7 +197,8 @@ pub fn hex_digits(c: &Color) -> String { /// Parse a hex field (`E67828`, `#e67828`, `fff`). pub fn parse_hex(s: &str) -> Option { - let s = s.trim().trim_start_matches('#'); + let s = s.trim(); + let s = s.strip_prefix('#').unwrap_or(s); if !(s.len() == 3 || s.len() == 6) || !s.chars().all(|c| c.is_ascii_hexdigit()) { return None; } diff --git a/crates/ui-egui/src/panels/color/tests.rs b/crates/ui-egui/src/panels/color/tests.rs index 548851e6b..cf02301a6 100644 --- a/crates/ui-egui/src/panels/color/tests.rs +++ b/crates/ui-egui/src/panels/color/tests.rs @@ -673,4 +673,6 @@ fn spectrum_and_hex() { assert_eq!(parse_hex("#fff").unwrap().to_hex(), "#ffffff"); assert!(parse_hex("zz").is_none()); assert!(parse_hex("12345").is_none()); + assert!(parse_hex("##e67828").is_none()); + assert!(parse_hex("###fff").is_none()); }