Fix special ASCII characters not being escaped when copied to clipboard (#306)

This commit is contained in:
LagoLunatic
2025-12-21 11:58:45 -05:00
committed by GitHub
parent f3f4b0482a
commit c0b9bfae21
+20 -1
View File
@@ -865,6 +865,24 @@ pub fn hover_items_ui(ui: &mut Ui, items: Vec<HoverItem>, appearance: &Appearanc
}
}
/// Escape ASCII characters such as \n or \t, but not Unicode characters such as \u{3000}.
/// Suitable for copying to clipboard.
fn escape_special_ascii_characters(value: String) -> String {
let mut escaped = String::new();
escaped.push('"');
for c in value.chars() {
if c.is_ascii() {
for e in c.escape_default() {
escaped.push(e);
}
} else {
escaped.push(c);
}
}
escaped.push('"');
escaped
}
pub fn context_menu_items_ui(
ui: &mut Ui,
items: Vec<ContextItem>,
@@ -894,7 +912,8 @@ pub fn context_menu_items_ui(
write_text(")", appearance.text_color, &mut job, appearance.code_font.clone());
}
if ui.button(job).clicked() {
ui.ctx().copy_text(value);
let escaped = escape_special_ascii_characters(value);
ui.ctx().copy_text(escaped);
ui.close();
}
}