mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 05:10:03 -04:00
Store web_sys::File inside of DroppedFile (#8354)
* Closes #4654 * Related #4667 * [x] I have followed the instructions in the PR template This PR avoids materializing the contents of a file that was dragged into an egui application on the web. It does so by storing the `web_sys::File` handle directly on WASM. This breaks the existing API of `DroppedFile` on the web, because there is no way to retrieve the bytes synchronously form a `DroppedFile` anymore, forcing handling call sites to become asynchronous. The native API remains the same. --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
|
||||
mod app_runner;
|
||||
mod backend;
|
||||
mod dropped_file;
|
||||
mod events;
|
||||
mod input;
|
||||
mod panic_handler;
|
||||
@@ -207,13 +208,12 @@ fn set_clipboard_text(s: &str) {
|
||||
return;
|
||||
}
|
||||
let promise = window.navigator().clipboard().write_text(s);
|
||||
let future = wasm_bindgen_futures::JsFuture::from(promise);
|
||||
let future = async move {
|
||||
if let Err(err) = future.await {
|
||||
if let Err(err) = promise.await {
|
||||
log::error!("Copy/cut action failed: {}", string_from_js_value(&err));
|
||||
}
|
||||
};
|
||||
wasm_bindgen_futures::spawn_local(future);
|
||||
js_sys::futures::spawn_local(future);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,16 +248,15 @@ fn set_clipboard_image(image: &egui::ColorImage) {
|
||||
};
|
||||
let items = js_sys::Array::of1(&item);
|
||||
let promise = window.navigator().clipboard().write(&items);
|
||||
let future = wasm_bindgen_futures::JsFuture::from(promise);
|
||||
let future = async move {
|
||||
if let Err(err) = future.await {
|
||||
if let Err(err) = promise.await {
|
||||
log::error!(
|
||||
"Copy/cut image action failed: {}",
|
||||
string_from_js_value(&err)
|
||||
);
|
||||
}
|
||||
};
|
||||
wasm_bindgen_futures::spawn_local(future);
|
||||
js_sys::futures::spawn_local(future);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user