diff --git a/src/client.rs b/src/client.rs index 44d3e0201..f080eeacb 100644 --- a/src/client.rs +++ b/src/client.rs @@ -95,6 +95,11 @@ lazy_static::lazy_static! { static ref TEXT_CLIPBOARD_STATE: Arc> = Arc::new(Mutex::new(TextClipboardState::new())); } +#[cfg(not(any(target_os = "android", target_os = "ios")))] +pub fn update_clipboard_text(text: String) { + *OLD_CLIPBOARD_TEXT.lock().unwrap() = text; +} + #[cfg(not(any(target_os = "android", target_os = "ios")))] pub fn get_key_state(key: enigo::Key) -> bool { use enigo::KeyboardControllable; diff --git a/src/common.rs b/src/common.rs index 3cf10eaba..43776820e 100644 --- a/src/common.rs +++ b/src/common.rs @@ -187,9 +187,14 @@ pub fn update_clipboard(clipboard: Clipboard, old: Option<&Arc>>) } match ClipboardContext::new() { Ok(mut ctx) => { - let side = if old.is_none() { "host" } else { "client" }; + let host_side = "host"; + let client_side = "client"; + let side = if old.is_none() { host_side } else { client_side }; let old = if let Some(old) = old { old } else { &CONTENT }; *old.lock().unwrap() = content.clone(); + if side == client_side { + crate::client::update_clipboard_text(content.clone()); + } let _lock = ARBOARD_MTX.lock().unwrap(); allow_err!(ctx.set_text(content)); log::debug!("{} updated on {}", CLIPBOARD_NAME, side);