aboutsummaryrefslogtreecommitdiff
path: root/src/layout/tile.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-24 09:03:59 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-24 10:22:56 +0400
commit493c8dc89072a746795d4e7b94363cfef3e0ee89 (patch)
tree31a384a6272a876d95e271e186e08a92ed88092c /src/layout/tile.rs
parent8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e (diff)
downloadniri-493c8dc89072a746795d4e7b94363cfef3e0ee89.tar.gz
niri-493c8dc89072a746795d4e7b94363cfef3e0ee89.tar.bz2
niri-493c8dc89072a746795d4e7b94363cfef3e0ee89.zip
Implement block-out-from window rule, fix alpha on window screenshots
Diffstat (limited to 'src/layout/tile.rs')
-rw-r--r--src/layout/tile.rs11
1 files changed, 8 insertions, 3 deletions
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<W: LayoutElement> Tile<W> {
scale: Scale<f64>,
view_size: Size<i32, Logical>,
focus_ring: bool,
+ target: RenderTarget,
) -> impl Iterator<Item = TileRenderElement<R>> {
let alpha = if self.is_fullscreen {
1.
@@ -333,7 +335,7 @@ impl<W: LayoutElement> Tile<W> {
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<W: LayoutElement> Tile<W> {
scale: Scale<f64>,
view_size: Size<i32, Logical>,
focus_ring: bool,
+ target: RenderTarget,
) -> impl Iterator<Item = TileRenderElement<R>> {
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::<Vec<TileRenderElement<_>>>();
let elem = OffscreenRenderElement::new(
@@ -407,7 +411,8 @@ impl<W: LayoutElement> Tile<W> {
} 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())
}
}