From 819313200b1f97d844905391f2d73c9c3252a586 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Wed, 7 Jan 2026 20:23:19 +0900 Subject: [PATCH] fix hidden overlays all popping up after restart --- wlx-common/src/config.rs | 5 +++++ wlx-overlay-s/src/windowing/manager.rs | 14 ++++++++++++-- wlx-overlay-s/src/windowing/set.rs | 5 ++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/wlx-common/src/config.rs b/wlx-common/src/config.rs index b554e12..abd2e7c 100644 --- a/wlx-common/src/config.rs +++ b/wlx-common/src/config.rs @@ -16,7 +16,12 @@ pub type SerializedWindowStates = HashMap, OverlayWindowState>; #[derive(Clone, Serialize, Deserialize)] pub struct SerializedWindowSet { pub name: Arc, + + #[serde(default)] pub overlays: SerializedWindowStates, + + #[serde(default)] + pub hidden_overlays: SerializedWindowStates, } pub const fn def_pw_tokens() -> PwTokenMap { diff --git a/wlx-overlay-s/src/windowing/manager.rs b/wlx-overlay-s/src/windowing/manager.rs index 151f747..65e717c 100644 --- a/wlx-overlay-s/src/windowing/manager.rs +++ b/wlx-overlay-s/src/windowing/manager.rs @@ -183,10 +183,10 @@ where log::debug!("{}: toggle off", o.config.name); self.sets[self.restore_set] - .inactive_overlays + .hidden_overlays .arc_set(o.config.name.clone(), active_state); } else if let Some(state) = self.sets[self.restore_set] - .inactive_overlays + .hidden_overlays .arc_rm(&o.config.name) { let o = &mut self.overlays[id]; @@ -387,9 +387,12 @@ impl OverlayWindowManager { } } + let hidden_overlays: HashMap<_, _> = set.hidden_overlays.iter().cloned().collect(); + let serialized = SerializedWindowSet { name: set.name.clone(), overlays, + hidden_overlays, }; app.session.config.sets.push(serialized); } @@ -454,10 +457,17 @@ impl OverlayWindowManager { } } + let hidden_overlays: AStrMap<_> = s + .hidden_overlays + .iter() + .map(|(k, v)| (k.clone(), v.clone())) + .collect(); + self.sets.push(OverlayWindowSet { name: s.name.clone(), overlays, inactive_overlays, + hidden_overlays, }); } diff --git a/wlx-overlay-s/src/windowing/set.rs b/wlx-overlay-s/src/windowing/set.rs index 180252b..8388dbf 100644 --- a/wlx-overlay-s/src/windowing/set.rs +++ b/wlx-overlay-s/src/windowing/set.rs @@ -9,6 +9,9 @@ pub struct OverlayWindowSet { pub(super) name: Arc, pub(super) overlays: SecondaryMap, - // stores overlays that have not been seen since startup. + /// overlays that are not currently visible + pub(super) hidden_overlays: AStrMap, + + /// overlays that have not been seen since startup pub(super) inactive_overlays: AStrMap, }