From 87b791ee3a990b8041d0fa0bc8cff80b7cd48323 Mon Sep 17 00:00:00 2001 From: arabian Date: Tue, 16 Dec 2025 20:54:30 +0300 Subject: [PATCH] new feature: pause playback when GUI window is closed --- src/gui/draw.rs | 5 +++++ src/gui/mod.rs | 8 +++++++- src/types/config.rs | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gui/draw.rs b/src/gui/draw.rs index af315ab..3232aff 100644 --- a/src/gui/draw.rs +++ b/src/gui/draw.rs @@ -48,10 +48,15 @@ impl SoundpadGui { &mut self.config.save_scale_factor, "Always remember UI scale factor", ); + let pause_on_exit_response = ui.checkbox( + &mut self.config.pause_on_exit, + "Pause audio playback when the window is closed", + ); if save_volume_response.changed() || save_input_response.changed() || save_scale_response.changed() + || pause_on_exit_response.changed() { self.config.save_to_file().ok(); } diff --git a/src/gui/mod.rs b/src/gui/mod.rs index d887451..33d47fc 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -149,7 +149,13 @@ pub async fn run() -> Result<(), Box> { Ok(Box::new(SoundpadGui::new(&cc.egui_ctx))) }), ) { - Ok(_) => Ok(()), + Ok(_) => { + let config = get_gui_config(); + if config.pause_on_exit { + make_request_sync(Request::pause()).ok(); + } + Ok(()) + } Err(e) => Err(e.into()), } } diff --git a/src/types/config.rs b/src/types/config.rs index e2bdb8a..c9f4774 100644 --- a/src/types/config.rs +++ b/src/types/config.rs @@ -36,6 +36,7 @@ pub struct GuiConfig { pub save_volume: bool, pub save_input: bool, pub save_scale_factor: bool, + pub pause_on_exit: bool, pub dirs: HashSet, } @@ -48,6 +49,7 @@ impl Default for GuiConfig { save_volume: false, save_input: false, save_scale_factor: false, + pause_on_exit: false, dirs: HashSet::default(), }