fix hidden overlays all popping up after restart
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user