eframe web fix: `save()` on "blur" event
This commit is contained in:
parent
051b90bfc7
commit
f3a0ac1d1b
|
|
@ -191,7 +191,7 @@ impl AppRunner {
|
||||||
pub fn update_focus(&mut self) {
|
pub fn update_focus(&mut self) {
|
||||||
let has_focus = self.has_focus();
|
let has_focus = self.has_focus();
|
||||||
if self.input.raw.focused != has_focus {
|
if self.input.raw.focused != has_focus {
|
||||||
// log::debug!("{} Focus changed to {has_focus}", self.canvas().id());
|
log::trace!("{} Focus changed to {has_focus}", self.canvas().id());
|
||||||
self.input.set_focus(has_focus);
|
self.input.set_focus(has_focus);
|
||||||
|
|
||||||
if !has_focus {
|
if !has_focus {
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,13 @@ fn install_blur_focus(runner_ref: &WebRunner, target: &EventTarget) -> Result<()
|
||||||
// so we also poll the focus state each frame in `AppRunner::logic`.
|
// so we also poll the focus state each frame in `AppRunner::logic`.
|
||||||
for event_name in ["blur", "focus"] {
|
for event_name in ["blur", "focus"] {
|
||||||
let closure = move |_event: web_sys::MouseEvent, runner: &mut AppRunner| {
|
let closure = move |_event: web_sys::MouseEvent, runner: &mut AppRunner| {
|
||||||
// log::debug!("{} {event_name:?}", runner.canvas().id());
|
log::trace!("{} {event_name:?}", runner.canvas().id());
|
||||||
runner.update_focus();
|
runner.update_focus();
|
||||||
|
|
||||||
|
if event_name == "blur" {
|
||||||
|
// This might be a good time to save the state
|
||||||
|
runner.save();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
runner_ref.add_event_listener(target, event_name, closure)?;
|
runner_ref.add_event_listener(target, event_name, closure)?;
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ impl TextAgent {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// log::debug!("Focusing text agent");
|
log::trace!("Focusing text agent");
|
||||||
|
|
||||||
if let Err(err) = self.input.focus() {
|
if let Err(err) = self.input.focus() {
|
||||||
log::error!("failed to set focus: {}", super::string_from_js_value(&err));
|
log::error!("failed to set focus: {}", super::string_from_js_value(&err));
|
||||||
|
|
@ -160,7 +160,7 @@ impl TextAgent {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// log::debug!("Blurring text agent");
|
log::trace!("Blurring text agent");
|
||||||
|
|
||||||
if let Err(err) = self.input.blur() {
|
if let Err(err) = self.input.blur() {
|
||||||
log::error!("failed to set focus: {}", super::string_from_js_value(&err));
|
log::error!("failed to set focus: {}", super::string_from_js_value(&err));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue