egui_web: Repaint at least every seconds
Just in case the app needs it, e.g. because it has finished a download.
This commit is contained in:
parent
fad0029119
commit
86cfd0dcd3
2 changed files with 18 additions and 0 deletions
|
@ -200,6 +200,7 @@ pub fn start(app_runner: AppRunner) -> Result<AppRunnerRef, JsValue> {
|
||||||
let runner_ref = AppRunnerRef(Arc::new(Mutex::new(app_runner)));
|
let runner_ref = AppRunnerRef(Arc::new(Mutex::new(app_runner)));
|
||||||
install_canvas_events(&runner_ref)?;
|
install_canvas_events(&runner_ref)?;
|
||||||
install_document_events(&runner_ref)?;
|
install_document_events(&runner_ref)?;
|
||||||
|
repaint_every_ms(&runner_ref, 1000)?; // just in case. TODO: make it a parameter
|
||||||
paint_and_schedule(runner_ref.clone())?;
|
paint_and_schedule(runner_ref.clone())?;
|
||||||
Ok(runner_ref)
|
Ok(runner_ref)
|
||||||
}
|
}
|
||||||
|
|
|
@ -424,6 +424,23 @@ fn install_document_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Repaint at least every `ms` milliseconds.
|
||||||
|
fn repaint_every_ms(runner_ref: &AppRunnerRef, milliseconds: i32) -> Result<(), JsValue> {
|
||||||
|
assert!(milliseconds >= 0);
|
||||||
|
use wasm_bindgen::JsCast;
|
||||||
|
let window = web_sys::window().unwrap();
|
||||||
|
let runner_ref = runner_ref.clone();
|
||||||
|
let closure = Closure::wrap(Box::new(move || {
|
||||||
|
runner_ref.0.lock().needs_repaint = true;
|
||||||
|
}) as Box<dyn FnMut()>);
|
||||||
|
window.set_interval_with_callback_and_timeout_and_arguments_0(
|
||||||
|
closure.as_ref().unchecked_ref(),
|
||||||
|
milliseconds,
|
||||||
|
)?;
|
||||||
|
closure.forget();
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn modifiers_from_event(event: &web_sys::KeyboardEvent) -> egui::Modifiers {
|
fn modifiers_from_event(event: &web_sys::KeyboardEvent) -> egui::Modifiers {
|
||||||
egui::Modifiers {
|
egui::Modifiers {
|
||||||
alt: event.alt_key(),
|
alt: event.alt_key(),
|
||||||
|
|
Loading…
Reference in a new issue