From 493c8dc89072a746795d4e7b94363cfef3e0ee89 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 24 Mar 2024 09:03:59 +0400 Subject: Implement block-out-from window rule, fix alpha on window screenshots --- src/layout/tile.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/layout/tile.rs') diff --git a/src/layout/tile.rs b/src/layout/tile.rs index faa17840..3d2da48c 100644 --- a/src/layout/tile.rs +++ b/src/layout/tile.rs @@ -13,6 +13,7 @@ use crate::animation::Animation; use crate::niri_render_elements; use crate::render_helpers::offscreen::OffscreenRenderElement; use crate::render_helpers::renderer::NiriRenderer; +use crate::render_helpers::RenderTarget; /// Toplevel window with decorations. #[derive(Debug)] @@ -324,6 +325,7 @@ impl Tile { scale: Scale, view_size: Size, focus_ring: bool, + target: RenderTarget, ) -> impl Iterator> { let alpha = if self.is_fullscreen { 1. @@ -333,7 +335,7 @@ impl Tile { let rv = self .window - .render(renderer, location + self.window_loc(), scale, alpha) + .render(renderer, location + self.window_loc(), scale, alpha, target) .into_iter() .map(Into::into); @@ -376,10 +378,12 @@ impl Tile { scale: Scale, view_size: Size, focus_ring: bool, + target: RenderTarget, ) -> impl Iterator> { if let Some(anim) = &self.open_animation { let renderer = renderer.as_gles_renderer(); - let elements = self.render_inner(renderer, location, scale, view_size, focus_ring); + let elements = + self.render_inner(renderer, location, scale, view_size, focus_ring, target); let elements = elements.collect::>>(); let elem = OffscreenRenderElement::new( @@ -407,7 +411,8 @@ impl Tile { } else { self.window().set_offscreen_element_id(None); - let elements = self.render_inner(renderer, location, scale, view_size, focus_ring); + let elements = + self.render_inner(renderer, location, scale, view_size, focus_ring, target); None.into_iter().chain(Some(elements).into_iter().flatten()) } } -- cgit