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)]
pub struct SerializedWindowSet {
pub name: Arc<str>,
#[serde(default)]
pub overlays: SerializedWindowStates,
#[serde(default)]
pub hidden_overlays: SerializedWindowStates,
}
pub const fn def_pw_tokens() -> PwTokenMap {

View File

@@ -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<T> OverlayWindowManager<T> {
}
}
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<T> OverlayWindowManager<T> {
}
}
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,
});
}

View File

@@ -9,6 +9,9 @@ pub struct OverlayWindowSet {
pub(super) name: Arc<str>,
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>,
}