diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 18f5b7c4a..0769d3bea 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -6,7 +6,7 @@ use std::sync::{ }; #[cfg(windows)] -use clipboard::{cliprdr::CliprdrClientContext, ClipboardFile, ContextSend}; +use clipboard::{cliprdr::CliprdrClientContext, empty_clipboard, ContextSend}; use crossbeam_queue::ArrayQueue; use hbb_common::config::{PeerConfig, TransferSerde}; use hbb_common::fs::{ @@ -270,6 +270,15 @@ impl Remote { } #[cfg(not(any(target_os = "android", target_os = "ios")))] Client::try_stop_clipboard(&self.handler.session_id); + + #[cfg(windows)] + { + let conn_id = self.client_conn_id; + ContextSend::proc(|context: &mut Box| -> u32 { + empty_clipboard(context, conn_id); + 0 + }); + } } fn handle_job_status(&mut self, id: i32, file_num: i32, err: Option) { diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index a0c10a77e..c1ef08e7f 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -16,7 +16,7 @@ use crate::ipc::Connection; #[cfg(not(any(target_os = "ios")))] use crate::ipc::{self, Data}; #[cfg(windows)] -use clipboard::{cliprdr::CliprdrClientContext, ContextSend}; +use clipboard::{cliprdr::CliprdrClientContext, empty_clipboard, ContextSend}; #[cfg(not(any(target_os = "android", target_os = "ios")))] use hbb_common::tokio::sync::mpsc::unbounded_channel; #[cfg(windows)] @@ -171,6 +171,14 @@ impl ConnectionManager { .map(|c| c.disconnected = true); } + #[cfg(windows)] + { + ContextSend::proc(|context: &mut Box| -> u32 { + empty_clipboard(context, id); + 0 + }); + } + #[cfg(any(target_os = "android"))] if CLIENTS .read()