diff --git a/wlx-overlay-s/src/backend/openvr/mod.rs b/wlx-overlay-s/src/backend/openvr/mod.rs index 2a741bd..b225967 100644 --- a/wlx-overlay-s/src/backend/openvr/mod.rs +++ b/wlx-overlay-s/src/backend/openvr/mod.rs @@ -259,7 +259,10 @@ pub fn openvr_run(show_by_default: bool, headless: bool) -> Result<(), BackendEr .pointers .iter() .any(|p| p.now.toggle_dashboard && !p.before.toggle_dashboard) - { /* TODO */ } + { + app.tasks + .enqueue(TaskType::Overlay(OverlayTask::ToggleDashboard)); + } overlays .values_mut() diff --git a/wlx-overlay-s/src/backend/openxr/mod.rs b/wlx-overlay-s/src/backend/openxr/mod.rs index a1f7ab2..f4e7a54 100644 --- a/wlx-overlay-s/src/backend/openxr/mod.rs +++ b/wlx-overlay-s/src/backend/openxr/mod.rs @@ -300,7 +300,10 @@ pub fn openxr_run(show_by_default: bool, headless: bool) -> Result<(), BackendEr .pointers .iter() .any(|p| p.now.toggle_dashboard && !p.before.toggle_dashboard) - { /* TODO */ } + { + app.tasks + .enqueue(TaskType::Overlay(OverlayTask::ToggleDashboard)); + } watch_fade(&mut app, overlays.mut_by_id(watch_id).unwrap()); // want panic if let Some(ref mut space_mover) = playspace { diff --git a/wlx-overlay-s/src/backend/task.rs b/wlx-overlay-s/src/backend/task.rs index 637c708..140a1c6 100644 --- a/wlx-overlay-s/src/backend/task.rs +++ b/wlx-overlay-s/src/backend/task.rs @@ -85,6 +85,7 @@ pub enum OverlayTask { SoftToggleOverlay(OverlaySelector), DeleteActiveSet, ToggleEditMode, + ToggleDashboard, ShowHide, CleanupMirrors, Modify(OverlaySelector, Box), diff --git a/wlx-overlay-s/src/gui/panel/button.rs b/wlx-overlay-s/src/gui/panel/button.rs index 39c8ae9..b7aa11a 100644 --- a/wlx-overlay-s/src/gui/panel/button.rs +++ b/wlx-overlay-s/src/gui/panel/button.rs @@ -238,16 +238,8 @@ pub(super) fn setup_custom_button( return Ok(EventResult::Pass); } - app.tasks.enqueue(TaskType::Overlay(OverlayTask::Modify( - OverlaySelector::Name(DASH_NAME.into()), - Box::new(move |app, owc| { - if owc.active_state.is_none() { - owc.activate(app); - } else { - owc.deactivate(); - } - }), - ))); + app.tasks + .enqueue(TaskType::Overlay(OverlayTask::ToggleDashboard)); Ok(EventResult::Consumed) }), "::SetToggle" => { diff --git a/wlx-overlay-s/src/windowing/manager.rs b/wlx-overlay-s/src/windowing/manager.rs index b45ded1..7cb3369 100644 --- a/wlx-overlay-s/src/windowing/manager.rs +++ b/wlx-overlay-s/src/windowing/manager.rs @@ -21,7 +21,7 @@ use crate::{ overlays::{ anchor::{create_anchor, create_grab_help}, custom::create_custom, - dashboard::create_dash_frontend, + dashboard::{DASH_NAME, create_dash_frontend}, edit::EditWrapperManager, keyboard::create_keyboard, screen::create_screens, @@ -201,17 +201,28 @@ where OverlayTask::ToggleEditMode => { self.set_edit_mode(!self.edit_mode, app)?; } + OverlayTask::ToggleDashboard => { + if let Some(overlay) = + self.mut_by_selector(&OverlaySelector::Name(DASH_NAME.into())) + { + if overlay.config.active_state.is_none() { + overlay.config.activate(app); + } else { + overlay.config.deactivate(); + } + } + } OverlayTask::AddSet => { self.sets.push(OverlayWindowSet::default()); let len = self.sets.len(); for id in [self.watch_id, self.keyboard_id] { - self.mut_by_id(id).map(|o| { + if let Some(o) = self.mut_by_id(id) { let _ = o .config .backend .notify(app, OverlayEventData::NumSetsChanged(len)) .log_err("Could not notify NumSetsChanged"); - }); + } } } OverlayTask::DeleteActiveSet => { @@ -243,13 +254,13 @@ where self.sets.remove(set); let len = self.sets.len(); for id in [self.watch_id, self.keyboard_id] { - self.mut_by_id(id).map(|o| { + if let Some(o) = self.mut_by_id(id) { let _ = o .config .backend .notify(app, OverlayEventData::NumSetsChanged(len)) .log_err("Could not notify NumSetsChanged"); - }); + } } } OverlayTask::CleanupMirrors => {