use fenestra_core::Clipboard;
#[derive(Default)]
pub struct OsClipboard {
inner: Option<arboard::Clipboard>,
}
impl OsClipboard {
fn ensure(&mut self) -> Option<&mut arboard::Clipboard> {
if self.inner.is_none() {
self.inner = arboard::Clipboard::new().ok();
}
self.inner.as_mut()
}
}
impl Clipboard for OsClipboard {
fn get(&mut self) -> Option<String> {
self.ensure().and_then(|c| c.get_text().ok())
}
fn set(&mut self, text: String) {
if let Some(c) = self.ensure() {
let _ = c.set_text(text);
}
}
}