From 0835e25b15c8c13e709dfd58265ba75b1c17f0a5 Mon Sep 17 00:00:00 2001 From: Fabricio Silva Date: Thu, 30 Apr 2026 18:10:46 +0100 Subject: [PATCH] Close menus before take screenshots --- crates/core/src/view/reader/mod.rs | 2 +- crates/emulator/src/main.rs | 6 ++++++ crates/plato/src/app.rs | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/crates/core/src/view/reader/mod.rs b/crates/core/src/view/reader/mod.rs index 0278422..c7e60ac 100644 --- a/crates/core/src/view/reader/mod.rs +++ b/crates/core/src/view/reader/mod.rs @@ -1471,7 +1471,7 @@ impl Reader { } } - fn toggle_bars(&mut self, enable: Option, hub: &Hub, rq: &mut RenderQueue, context: &mut Context) { + pub fn toggle_bars(&mut self, enable: Option, hub: &Hub, rq: &mut RenderQueue, context: &mut Context) { if let Some(top_index) = locate::(self) { if let Some(true) = enable { return; diff --git a/crates/emulator/src/main.rs b/crates/emulator/src/main.rs index 82a1b9f..e94f91f 100644 --- a/crates/emulator/src/main.rs +++ b/crates/emulator/src/main.rs @@ -552,6 +552,12 @@ fn main() -> Result<(), Error> { rq.add(RenderData::new(view.id(), context.fb.rect(), UpdateMode::Gui)); }, Event::Select(EntryId::TakeScreenshot) => { + view.children_mut().retain(|child| !child.is::()); + if let Some(reader) = view.as_mut().downcast_mut::() { + reader.toggle_bars(Some(false), &tx, &mut rq, &mut context); + } + rq.add(RenderData::expose(context.fb.rect(), UpdateMode::Full)); + process_render_queue(view.as_ref(), &mut rq, &mut context, &mut updating); let name = Local::now().format("screenshot-%Y%m%d_%H%M%S.png"); let msg = match context.fb.save(&name.to_string()) { Err(e) => format!("Couldn't take screenshot: {}).", e), diff --git a/crates/plato/src/app.rs b/crates/plato/src/app.rs index 980ba81..fe7f65f 100644 --- a/crates/plato/src/app.rs +++ b/crates/plato/src/app.rs @@ -929,6 +929,12 @@ pub fn run() -> Result<(), Error> { set_wifi(!context.settings.wifi, &mut context); }, Event::Select(EntryId::TakeScreenshot) => { + view.children_mut().retain(|child| !child.is::()); + if let Some(reader) = view.as_mut().downcast_mut::() { + reader.toggle_bars(Some(false), &tx, &mut rq, &mut context); + } + rq.add(RenderData::expose(context.fb.rect(), UpdateMode::Full)); + process_render_queue(view.as_ref(), &mut rq, &mut context, &mut updating); let name = Local::now().format("screenshot-%Y%m%d_%H%M%S.png"); let msg = match context.fb.save(&name.to_string()) { Err(e) => format!("{}", e), -- 2.51.2