From 5f0ec02dbbe120f9c3c9a8a8f9f2c7245cf1fcaa Mon Sep 17 00:00:00 2001 From: Ryan Hileman Date: Sun, 29 Oct 2023 23:55:00 -0700 Subject: [PATCH] fix #3480 - copy doesn't work on Safari --- crates/eframe/src/web/events.rs | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/crates/eframe/src/web/events.rs b/crates/eframe/src/web/events.rs index ea5a5bf0863..2fab7bf5ce9 100644 --- a/crates/eframe/src/web/events.rs +++ b/crates/eframe/src/web/events.rs @@ -175,16 +175,30 @@ pub(crate) fn install_document_events(runner_ref: &WebRunner) -> Result<(), JsVa )?; #[cfg(web_sys_unstable_apis)] - runner_ref.add_event_listener(&document, "cut", |_: web_sys::ClipboardEvent, runner| { - runner.input.raw.events.push(egui::Event::Cut); - runner.needs_repaint.repaint_asap(); - })?; + runner_ref.add_event_listener( + &document, + "cut", + |event: web_sys::ClipboardEvent, runner| { + runner.input.raw.events.push(egui::Event::Cut); + runner.logic(); + runner.needs_repaint.repaint_asap(); + event.stop_propagation(); + event.prevent_default(); + }, + )?; #[cfg(web_sys_unstable_apis)] - runner_ref.add_event_listener(&document, "copy", |_: web_sys::ClipboardEvent, runner| { - runner.input.raw.events.push(egui::Event::Copy); - runner.needs_repaint.repaint_asap(); - })?; + runner_ref.add_event_listener( + &document, + "copy", + |event: web_sys::ClipboardEvent, runner| { + runner.input.raw.events.push(egui::Event::Copy); + runner.logic(); + runner.needs_repaint.repaint_asap(); + event.stop_propagation(); + event.prevent_default(); + }, + )?; Ok(()) }