in native/desktop-linux/src/linux/data_transfer.rs [282:299]
fn send_request(&mut self, _conn: &Connection, _qh: &QueueHandle<Self>, source: &WlDataSource, mime: String, mut fd: WritePipe) {
debug!("DataSourceHandler::send_request: {mime}");
let data_type = if self.copy_paste_source.as_ref().map(CopyPasteSource::inner) == Some(source) {
DataSource::Clipboard
} else if self.drag_source.as_ref().map(DragSource::inner) == Some(source) {
DataSource::DragAndDrop
} else {
return;
};
let mime_cstr = CString::new(mime).unwrap();
let data = (self.callbacks.get_data_transfer_data)(data_type, BorrowedStrPtr::new(&mime_cstr));
match data.as_slice() {
Ok(slice) => {
fd.write_all(slice).expect("Write to data source failed");
}
Err(e) => error!("Error sending clipboard data: {e}"),
}
}