fix hidden overlays all popping up after restart

This commit is contained in:
galister
2026-01-07 20:23:19 +09:00
parent ac9f3c6d23
commit 819313200b
3 changed files with 21 additions and 3 deletions

View File

@@ -16,7 +16,12 @@ pub type SerializedWindowStates = HashMap<Arc<str>, OverlayWindowState>;
#[derive(Clone, Serialize, Deserialize)] #[derive(Clone, Serialize, Deserialize)]
pub struct SerializedWindowSet { pub struct SerializedWindowSet {
pub name: Arc<str>, pub name: Arc<str>,
#[serde(default)]
pub overlays: SerializedWindowStates, pub overlays: SerializedWindowStates,
#[serde(default)]
pub hidden_overlays: SerializedWindowStates,
} }
pub const fn def_pw_tokens() -> PwTokenMap { pub const fn def_pw_tokens() -> PwTokenMap {

View File

@@ -183,10 +183,10 @@ where
log::debug!("{}: toggle off", o.config.name); log::debug!("{}: toggle off", o.config.name);
self.sets[self.restore_set] self.sets[self.restore_set]
.inactive_overlays .hidden_overlays
.arc_set(o.config.name.clone(), active_state); .arc_set(o.config.name.clone(), active_state);
} else if let Some(state) = self.sets[self.restore_set] } else if let Some(state) = self.sets[self.restore_set]
.inactive_overlays .hidden_overlays
.arc_rm(&o.config.name) .arc_rm(&o.config.name)
{ {
let o = &mut self.overlays[id]; let o = &mut self.overlays[id];
@@ -387,9 +387,12 @@ impl<T> OverlayWindowManager<T> {
} }
} }
let hidden_overlays: HashMap<_, _> = set.hidden_overlays.iter().cloned().collect();
let serialized = SerializedWindowSet { let serialized = SerializedWindowSet {
name: set.name.clone(), name: set.name.clone(),
overlays, overlays,
hidden_overlays,
}; };
app.session.config.sets.push(serialized); app.session.config.sets.push(serialized);
} }
@@ -454,10 +457,17 @@ impl<T> OverlayWindowManager<T> {
} }
} }
let hidden_overlays: AStrMap<_> = s
.hidden_overlays
.iter()
.map(|(k, v)| (k.clone(), v.clone()))
.collect();
self.sets.push(OverlayWindowSet { self.sets.push(OverlayWindowSet {
name: s.name.clone(), name: s.name.clone(),
overlays, overlays,
inactive_overlays, inactive_overlays,
hidden_overlays,
}); });
} }

View File

@@ -9,6 +9,9 @@ pub struct OverlayWindowSet {
pub(super) name: Arc<str>, pub(super) name: Arc<str>,
pub(super) overlays: SecondaryMap<OverlayID, OverlayWindowState>, pub(super) overlays: SecondaryMap<OverlayID, OverlayWindowState>,
// stores overlays that have not been seen since startup. /// overlays that are not currently visible
pub(super) hidden_overlays: AStrMap<OverlayWindowState>,
/// overlays that have not been seen since startup
pub(super) inactive_overlays: AStrMap<OverlayWindowState>, pub(super) inactive_overlays: AStrMap<OverlayWindowState>,
} }