Rebase and implment multi-mimetype copies from lua

This commit is contained in:
UnnaturalTwilight 2026-07-01 10:50:01 -04:00
parent 4943694f68
commit b74dab360f
2 changed files with 19 additions and 8 deletions

View file

@ -104,7 +104,7 @@ impl<'a> Dispatcher<'a> {
}
fn dispatch_clipboard(&mut self, clip: ClipboardEvent) -> Result<()> {
if self.app.core.input.main.visible {
if self.app.core.input.focus() {
if let Some(text) = clip.text() {
self.dispatch_paste(text)?;
return Ok(());

View file

@ -54,21 +54,32 @@ impl Tty {
_ => return Err("invalid FinishDrop type".into_lua_err()),
},
// Clipboard
b"ReadClipboard" => {
let esc_seq = ReadClipboard {
write!(w, "{}", ReadClipboard {
mime: &t.raw_get::<BorrowedBytes>("mimes")?,
pw: &t.raw_get::<BorrowedBytes>("pw")?,
name: &t.raw_get::<BorrowedBytes>("name")?,
primary: t.raw_get("primary")?,
};
write!(w, "{}", esc_seq)
})
}
b"WriteClipboard" => {
let mime = &t.raw_get::<BorrowedBytes>("mime")?;
let payload = &t.raw_get::<BorrowedBytes>("data")?;
let alias = &t.raw_get::<BorrowedBytes>("alias")?;
write!(w, "{}", WriteClipboard { data: vec![WriteClipboardData { mime, payload, alias }] })
let mut data = Vec::new();
for v in &t.sequence_values::<Table>().collect::<Result<Vec<_>, mlua::Error>>()? {
data.push((
v.raw_get::<BorrowedBytes>("mime")?,
v.raw_get::<BorrowedBytes>("data")?,
v.raw_get::<BorrowedBytes>("alias")?,
));
}
write!(w, "{}", WriteClipboard {
data: data
.iter()
.map(|(m, p, a)| { WriteClipboardData { mime: &m, payload: &p, alias: &a } })
.collect(),
})
}
_ => return Err("invalid sequence kind".into_lua_err()),
};