Remove the need for setting `web_sys_unstable_apis` (#5000)
* No longer required since https://github.com/emilk/egui/pull/4980 And despite some outdated comments, wgpu/WebGPU doesn't need it either
This commit is contained in:
parent
47c0aeb7b9
commit
a9a6e0c2f2
|
|
@ -1,9 +1,2 @@
|
||||||
# clipboard api is still unstable, so web-sys requires the below flag to be passed for copy (ctrl + c) to work
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
# check status at https://developer.mozilla.org/en-US/docs/Web/API/Clipboard#browser_compatibility
|
|
||||||
# we don't use `[build]` because of rust analyzer's build cache invalidation https://github.com/emilk/eframe_template/issues/93
|
|
||||||
[target.wasm32-unknown-unknown]
|
|
||||||
rustflags = ["--cfg=web_sys_unstable_apis"]
|
|
||||||
|
|
||||||
[alias]
|
[alias]
|
||||||
xtask = "run --quiet --package xtask --"
|
xtask = "run --quiet --package xtask --"
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,7 @@ concurrency:
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# web_sys_unstable_apis is required to enable the web_sys clipboard API which eframe web uses,
|
RUSTFLAGS: -D warnings
|
||||||
# as well as by the wasm32-backend of the wgpu crate.
|
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
RUSTFLAGS: --cfg=web_sys_unstable_apis -D warnings
|
|
||||||
RUSTDOCFLAGS: -D warnings
|
RUSTDOCFLAGS: -D warnings
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,7 @@ on: [ push, pull_request ]
|
||||||
name: Rust
|
name: Rust
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# web_sys_unstable_apis is required to enable the web_sys clipboard API which eframe web uses,
|
RUSTFLAGS: -D warnings
|
||||||
# as well as by the wasm32-backend of the wgpu crate.
|
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
RUSTFLAGS: --cfg=web_sys_unstable_apis -D warnings
|
|
||||||
RUSTDOCFLAGS: -D warnings
|
RUSTDOCFLAGS: -D warnings
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ include = [
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
all-features = true
|
all-features = true
|
||||||
rustc-args = ["--cfg=web_sys_unstable_apis"]
|
|
||||||
targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]
|
targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,6 @@ You need to either use `edition = "2021"`, or set `resolver = "2"` in the `[work
|
||||||
|
|
||||||
You can opt-in to the using [`egui_wgpu`](https://github.com/emilk/egui/tree/master/crates/egui_wgpu) for rendering by enabling the `wgpu` feature and setting `NativeOptions::renderer` to `Renderer::Wgpu`.
|
You can opt-in to the using [`egui_wgpu`](https://github.com/emilk/egui/tree/master/crates/egui_wgpu) for rendering by enabling the `wgpu` feature and setting `NativeOptions::renderer` to `Renderer::Wgpu`.
|
||||||
|
|
||||||
To get copy-paste working on web, you need to compile with `export RUSTFLAGS=--cfg=web_sys_unstable_apis`.
|
|
||||||
|
|
||||||
## Alternatives
|
## Alternatives
|
||||||
`eframe` is not the only way to write an app using `egui`! You can also try [`egui-miniquad`](https://github.com/not-fl3/egui-miniquad), [`bevy_egui`](https://github.com/mvlabat/bevy_egui), [`egui_sdl2_gl`](https://github.com/ArjunNair/egui_sdl2_gl), and others.
|
`eframe` is not the only way to write an app using `egui`! You can also try [`egui-miniquad`](https://github.com/not-fl3/egui-miniquad), [`bevy_egui`](https://github.com/mvlabat/bevy_egui), [`egui_sdl2_gl`](https://github.com/ArjunNair/egui_sdl2_gl), and others.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,6 @@
|
||||||
//! call [`crate::run_native`] from your `main.rs`, and/or use `eframe::WebRunner` from your `lib.rs`.
|
//! call [`crate::run_native`] from your `main.rs`, and/or use `eframe::WebRunner` from your `lib.rs`.
|
||||||
//!
|
//!
|
||||||
//! ## Compiling for web
|
//! ## Compiling for web
|
||||||
//! To get copy-paste working on web, you need to compile with
|
|
||||||
//! `export RUSTFLAGS=--cfg=web_sys_unstable_apis`.
|
|
||||||
//!
|
|
||||||
//! You need to install the `wasm32` target with `rustup target add wasm32-unknown-unknown`.
|
//! You need to install the `wasm32` target with `rustup target add wasm32-unknown-unknown`.
|
||||||
//!
|
//!
|
||||||
//! Build the `.wasm` using `cargo build --target wasm32-unknown-unknown`
|
//! Build the `.wasm` using `cargo build --target wasm32-unknown-unknown`
|
||||||
|
|
|
||||||
|
|
@ -276,14 +276,10 @@ impl AppRunner {
|
||||||
super::open_url(&open.url, open.new_tab);
|
super::open_url(&open.url, open.new_tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(web_sys_unstable_apis)]
|
|
||||||
if !copied_text.is_empty() {
|
if !copied_text.is_empty() {
|
||||||
super::set_clipboard_text(&copied_text);
|
super::set_clipboard_text(&copied_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(web_sys_unstable_apis))]
|
|
||||||
let _ = copied_text;
|
|
||||||
|
|
||||||
if self.has_focus() {
|
if self.has_focus() {
|
||||||
// The eframe app has focus.
|
// The eframe app has focus.
|
||||||
if ime.is_some() {
|
if ime.is_some() {
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,6 @@ pub(crate) fn on_keyup(event: web_sys::KeyboardEvent, runner: &mut AppRunner) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn install_copy_cut_paste(runner_ref: &WebRunner, target: &EventTarget) -> Result<(), JsValue> {
|
fn install_copy_cut_paste(runner_ref: &WebRunner, target: &EventTarget) -> Result<(), JsValue> {
|
||||||
#[cfg(web_sys_unstable_apis)]
|
|
||||||
runner_ref.add_event_listener(target, "paste", |event: web_sys::ClipboardEvent, runner| {
|
runner_ref.add_event_listener(target, "paste", |event: web_sys::ClipboardEvent, runner| {
|
||||||
if let Some(data) = event.clipboard_data() {
|
if let Some(data) = event.clipboard_data() {
|
||||||
if let Ok(text) = data.get_data("text") {
|
if let Ok(text) = data.get_data("text") {
|
||||||
|
|
@ -294,7 +293,6 @@ fn install_copy_cut_paste(runner_ref: &WebRunner, target: &EventTarget) -> Resul
|
||||||
}
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
#[cfg(web_sys_unstable_apis)]
|
|
||||||
runner_ref.add_event_listener(target, "cut", |event: web_sys::ClipboardEvent, runner| {
|
runner_ref.add_event_listener(target, "cut", |event: web_sys::ClipboardEvent, runner| {
|
||||||
if runner.input.raw.focused {
|
if runner.input.raw.focused {
|
||||||
runner.input.raw.events.push(egui::Event::Cut);
|
runner.input.raw.events.push(egui::Event::Cut);
|
||||||
|
|
@ -311,7 +309,6 @@ fn install_copy_cut_paste(runner_ref: &WebRunner, target: &EventTarget) -> Resul
|
||||||
event.prevent_default();
|
event.prevent_default();
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
#[cfg(web_sys_unstable_apis)]
|
|
||||||
runner_ref.add_event_listener(target, "copy", |event: web_sys::ClipboardEvent, runner| {
|
runner_ref.add_event_listener(target, "copy", |event: web_sys::ClipboardEvent, runner| {
|
||||||
if runner.input.raw.focused {
|
if runner.input.raw.focused {
|
||||||
runner.input.raw.events.push(egui::Event::Copy);
|
runner.input.raw.events.push(egui::Event::Copy);
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,6 @@ fn set_cursor_icon(cursor: egui::CursorIcon) -> Option<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the clipboard text.
|
/// Set the clipboard text.
|
||||||
#[cfg(web_sys_unstable_apis)]
|
|
||||||
fn set_clipboard_text(s: &str) {
|
fn set_clipboard_text(s: &str) {
|
||||||
if let Some(window) = web_sys::window() {
|
if let Some(window) = web_sys::window() {
|
||||||
let promise = window.navigator().clipboard().write_text(s);
|
let promise = window.navigator().clipboard().write_text(s);
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,6 @@ impl WebRunner {
|
||||||
/// Will install a panic handler that will catch and log any panics
|
/// Will install a panic handler that will catch and log any panics
|
||||||
#[allow(clippy::new_without_default)]
|
#[allow(clippy::new_without_default)]
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
#[cfg(not(web_sys_unstable_apis))]
|
|
||||||
log::warn!(
|
|
||||||
"eframe compiled without RUSTFLAGS='--cfg=web_sys_unstable_apis'. Copying text won't work."
|
|
||||||
);
|
|
||||||
|
|
||||||
let panic_handler = PanicHandler::install();
|
let panic_handler = PanicHandler::install();
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,6 @@ cd "$script_path/.."
|
||||||
|
|
||||||
./scripts/setup_web.sh
|
./scripts/setup_web.sh
|
||||||
|
|
||||||
# This is required to enable the web_sys clipboard API which eframe web uses
|
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
export RUSTFLAGS=--cfg=web_sys_unstable_apis
|
|
||||||
|
|
||||||
CRATE_NAME="egui_demo_app"
|
CRATE_NAME="egui_demo_app"
|
||||||
|
|
||||||
FEATURES="web_app"
|
FEATURES="web_app"
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,7 @@ set -x
|
||||||
|
|
||||||
cargo +1.75.0 install --quiet typos-cli
|
cargo +1.75.0 install --quiet typos-cli
|
||||||
|
|
||||||
# web_sys_unstable_apis is required to enable the web_sys clipboard API which eframe web uses,
|
export RUSTFLAGS="-D warnings"
|
||||||
# as well as by the wasm32-backend of the wgpu crate.
|
|
||||||
export RUSTFLAGS="--cfg=web_sys_unstable_apis -D warnings"
|
|
||||||
export RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454
|
export RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454
|
||||||
|
|
||||||
# Fast checks first:
|
# Fast checks first:
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,6 @@ fi
|
||||||
CRATE_NAME="egui_demo_app"
|
CRATE_NAME="egui_demo_app"
|
||||||
FEATURES="glow,http,persistence"
|
FEATURES="glow,http,persistence"
|
||||||
|
|
||||||
# This is required to enable the web_sys clipboard API which eframe web uses
|
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
export RUSTFLAGS=--cfg=web_sys_unstable_apis
|
|
||||||
|
|
||||||
echo "Building rust…"
|
echo "Building rust…"
|
||||||
BUILD=debug # debug builds are faster
|
BUILD=debug # debug builds are faster
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue