fix zero transforms getting serialized
This commit is contained in:
@@ -43,6 +43,7 @@ impl Positioning {
|
|||||||
#[derive(Clone, Serialize, Deserialize)]
|
#[derive(Clone, Serialize, Deserialize)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub struct OverlayWindowState {
|
pub struct OverlayWindowState {
|
||||||
|
#[serde(skip_serializing, skip_deserializing)]
|
||||||
pub transform: Affine3A,
|
pub transform: Affine3A,
|
||||||
pub alpha: f32,
|
pub alpha: f32,
|
||||||
pub grabbable: bool,
|
pub grabbable: bool,
|
||||||
@@ -50,7 +51,6 @@ pub struct OverlayWindowState {
|
|||||||
pub positioning: Positioning,
|
pub positioning: Positioning,
|
||||||
pub curvature: Option<f32>,
|
pub curvature: Option<f32>,
|
||||||
pub additive: bool,
|
pub additive: bool,
|
||||||
#[serde(skip_serializing, skip_deserializing)]
|
|
||||||
pub saved_transform: Option<Affine3A>,
|
pub saved_transform: Option<Affine3A>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -294,9 +294,6 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
let Some(mut state) = o.config.active_state.clone() else {
|
let Some(mut state) = o.config.active_state.clone() else {
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
if let Some(transform) = state.saved_transform.as_ref() {
|
|
||||||
state.transform = *transform;
|
|
||||||
}
|
|
||||||
app.session
|
app.session
|
||||||
.config
|
.config
|
||||||
.global_set
|
.global_set
|
||||||
@@ -348,9 +345,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
// global overlays
|
// global overlays
|
||||||
for oid in &[self.watch_id] {
|
for oid in &[self.watch_id] {
|
||||||
if let Some(o) = self.mut_by_id(*oid) {
|
if let Some(o) = self.mut_by_id(*oid) {
|
||||||
if let Some(mut state) = app.session.config.global_set.get(&*o.config.name).cloned()
|
if let Some(state) = app.session.config.global_set.get(&*o.config.name).cloned() {
|
||||||
{
|
|
||||||
state.saved_transform = Some(state.transform);
|
|
||||||
o.config.active_state = Some(state);
|
o.config.active_state = Some(state);
|
||||||
o.config.reset(app, false);
|
o.config.reset(app, false);
|
||||||
log::debug!("global set: loaded state for {}", o.config.name);
|
log::debug!("global set: loaded state for {}", o.config.name);
|
||||||
@@ -499,7 +494,6 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
};
|
};
|
||||||
if self.current_set == Some(i) {
|
if self.current_set == Some(i) {
|
||||||
let o = &mut self.overlays[oid];
|
let o = &mut self.overlays[oid];
|
||||||
state.saved_transform = Some(state.transform);
|
|
||||||
o.config.active_state = Some(state);
|
o.config.active_state = Some(state);
|
||||||
o.config.reset(app, false);
|
o.config.reset(app, false);
|
||||||
shown = true;
|
shown = true;
|
||||||
@@ -540,12 +534,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
let ws = &mut self.sets[*current_set];
|
let ws = &mut self.sets[*current_set];
|
||||||
ws.overlays.clear();
|
ws.overlays.clear();
|
||||||
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
||||||
if let Some(mut state) = data.config.active_state.take() {
|
if let Some(state) = data.config.active_state.take() {
|
||||||
if let Some(transform) = state.saved_transform {
|
|
||||||
state.transform = transform;
|
|
||||||
} else {
|
|
||||||
state.transform = Affine3A::ZERO;
|
|
||||||
}
|
|
||||||
log::debug!("{}: active_state → ws{}", data.config.name, current_set);
|
log::debug!("{}: active_state → ws{}", data.config.name, current_set);
|
||||||
ws.overlays.insert(id, state);
|
ws.overlays.insert(id, state);
|
||||||
}
|
}
|
||||||
@@ -560,11 +549,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
|
|
||||||
let ws = &mut self.sets[new_set];
|
let ws = &mut self.sets[new_set];
|
||||||
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
||||||
if let Some(mut state) = ws.overlays.remove(id) {
|
if let Some(state) = ws.overlays.remove(id) {
|
||||||
if state.transform.x_axis.length_squared() > f32::EPSILON {
|
|
||||||
state.saved_transform = Some(state.transform);
|
|
||||||
}
|
|
||||||
state.transform = Affine3A::IDENTITY;
|
|
||||||
log::debug!("{}: ws{} → active_state", data.config.name, new_set);
|
log::debug!("{}: ws{} → active_state", data.config.name, new_set);
|
||||||
data.config.active_state = Some(state);
|
data.config.active_state = Some(state);
|
||||||
data.config.reset(app, false);
|
data.config.reset(app, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user