use crate::{Decorations, Edges, Pixels, Tiling, Window, px};
#[cfg(not(target_os = "linux"))]
pub(crate) const SHADOW_SIZE: Pixels = px(0.0);
#[cfg(target_os = "linux")]
pub(crate) const SHADOW_SIZE: Pixels = px(20.0);
fn client_frame_insets(shadow_size: Pixels, tiling: &Tiling) -> Edges<Pixels> {
let mut insets = Edges::all(shadow_size);
if tiling.top {
insets.top = px(0.0);
}
if tiling.bottom {
insets.bottom = px(0.0);
}
if tiling.left {
insets.left = px(0.0);
}
if tiling.right {
insets.right = px(0.0);
}
insets
}
pub fn window_paddings(window: &Window) -> Edges<Pixels> {
let shadow_size = window.client_inset().unwrap_or(SHADOW_SIZE);
match window.window_decorations() {
Decorations::Server => Edges::all(px(0.0)),
Decorations::Client { tiling } => client_frame_insets(shadow_size, &tiling),
}
}