aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-24 08:30:26 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-24 08:30:26 +0400
commit8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e (patch)
treeb09c2b2d0237f36b36d01d6fc47657d8497d1c61 /src/layout
parenta16a0f0e52d6df8abd602baa15cee44e0656d790 (diff)
downloadniri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.tar.gz
niri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.tar.bz2
niri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.zip
Implement opacity window rule
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/mod.rs2
-rw-r--r--src/layout/tile.rs8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs
index bc5c8dcf..bbca41c9 100644
--- a/src/layout/mod.rs
+++ b/src/layout/mod.rs
@@ -95,6 +95,7 @@ pub trait LayoutElement {
renderer: &mut R,
location: Point<i32, Logical>,
scale: Scale<f64>,
+ alpha: f32,
) -> Vec<LayoutElementRenderElement<R>>;
fn request_size(&self, size: Size<i32, Logical>);
@@ -1856,6 +1857,7 @@ mod tests {
_renderer: &mut R,
_location: Point<i32, Logical>,
_scale: Scale<f64>,
+ _alpha: f32,
) -> Vec<LayoutElementRenderElement<R>> {
vec![]
}
diff --git a/src/layout/tile.rs b/src/layout/tile.rs
index 0609583e..faa17840 100644
--- a/src/layout/tile.rs
+++ b/src/layout/tile.rs
@@ -325,9 +325,15 @@ impl<W: LayoutElement> Tile<W> {
view_size: Size<i32, Logical>,
focus_ring: bool,
) -> impl Iterator<Item = TileRenderElement<R>> {
+ let alpha = if self.is_fullscreen {
+ 1.
+ } else {
+ self.window.rules().opacity.unwrap_or(1.).clamp(0., 1.)
+ };
+
let rv = self
.window
- .render(renderer, location + self.window_loc(), scale)
+ .render(renderer, location + self.window_loc(), scale, alpha)
.into_iter()
.map(Into::into);