Add workspace-shadow {} config to overview {}

This commit is contained in:
Ivan Molodetskikh
2025-05-01 09:36:10 +03:00
parent 3289324ce4
commit 446bc155ce
4 changed files with 103 additions and 26 deletions
+69
View File
@@ -754,6 +754,49 @@ pub struct ShadowOffset {
pub y: FloatOrInt<-65535, 65535>,
}
#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)]
pub struct WorkspaceShadow {
#[knuffel(child)]
pub off: bool,
#[knuffel(child, default = Self::default().offset)]
pub offset: ShadowOffset,
#[knuffel(child, unwrap(argument), default = Self::default().softness)]
pub softness: FloatOrInt<0, 1024>,
#[knuffel(child, unwrap(argument), default = Self::default().spread)]
pub spread: FloatOrInt<-1024, 1024>,
#[knuffel(child, default = Self::default().color)]
pub color: Color,
}
impl Default for WorkspaceShadow {
fn default() -> Self {
Self {
off: false,
offset: ShadowOffset {
x: FloatOrInt(0.),
y: FloatOrInt(20.),
},
softness: FloatOrInt(120.),
spread: FloatOrInt(20.),
color: Color::from_rgba8_unpremul(0, 0, 0, 0x70),
}
}
}
impl From<WorkspaceShadow> for Shadow {
fn from(value: WorkspaceShadow) -> Self {
Self {
on: !value.off,
offset: value.offset,
softness: value.softness,
spread: value.spread,
draw_behind_window: false,
color: value.color,
inactive_color: None,
}
}
}
#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)]
pub struct TabIndicator {
#[knuffel(child)]
@@ -1269,6 +1312,8 @@ pub struct Overview {
pub zoom: FloatOrInt<0, 1>,
#[knuffel(child, default = Self::default().backdrop_color)]
pub backdrop_color: Color,
#[knuffel(child, default)]
pub workspace_shadow: WorkspaceShadow,
}
impl Default for Overview {
@@ -1276,6 +1321,7 @@ impl Default for Overview {
Self {
zoom: FloatOrInt(0.5),
backdrop_color: DEFAULT_BACKDROP_COLOR,
workspace_shadow: WorkspaceShadow::default(),
}
}
}
@@ -4611,6 +4657,29 @@ mod tests {
b: 0.15,
a: 1.0,
},
workspace_shadow: WorkspaceShadow {
off: false,
offset: ShadowOffset {
x: FloatOrInt(
0.0,
),
y: FloatOrInt(
20.0,
),
},
softness: FloatOrInt(
120.0,
),
spread: FloatOrInt(
20.0,
),
color: Color {
r: 0.0,
g: 0.0,
b: 0.0,
a: 0.4392157,
},
},
},
environment: Environment(
[