diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-12 08:46:02 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-12 08:46:02 +0400 |
| commit | d2ed42a157037f85a95b53da0431ac043922cea0 (patch) | |
| tree | c8a74237be337e6f3873606d150e0665b12925b5 /src/layout/closing_window.rs | |
| parent | 4073f9f52287781a438ddfad3a37b630394ba29d (diff) | |
| download | niri-d2ed42a157037f85a95b53da0431ac043922cea0.tar.gz niri-d2ed42a157037f85a95b53da0431ac043922cea0.tar.bz2 niri-d2ed42a157037f85a95b53da0431ac043922cea0.zip | |
closing_window: Pass geo size and view rect
Diffstat (limited to 'src/layout/closing_window.rs')
| -rw-r--r-- | src/layout/closing_window.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/layout/closing_window.rs b/src/layout/closing_window.rs index 2312f9f1..c1f4e599 100644 --- a/src/layout/closing_window.rs +++ b/src/layout/closing_window.rs @@ -10,7 +10,7 @@ use smithay::backend::renderer::element::utils::{ use smithay::backend::renderer::element::{Id, Kind, RenderElement}; use smithay::backend::renderer::gles::{GlesRenderer, GlesTexture}; use smithay::backend::renderer::Renderer as _; -use smithay::utils::{Logical, Point, Scale, Transform}; +use smithay::utils::{Logical, Point, Rectangle, Scale, Size, Transform}; use crate::animation::Animation; use crate::niri_render_elements; @@ -35,8 +35,8 @@ pub struct ClosingWindow { /// Where the window should be blocked out from. block_out_from: Option<BlockOutFrom>, - /// Center of the window geometry. - center: Point<i32, Logical>, + /// Size of the window geometry. + geo_size: Size<i32, Logical>, /// Position in the workspace. pos: Point<i32, Logical>, @@ -62,7 +62,7 @@ impl ClosingWindow { renderer: &mut GlesRenderer, snapshot: RenderSnapshot<E, E>, scale: Scale<f64>, - center: Point<i32, Logical>, + geo_size: Size<i32, Logical>, pos: Point<i32, Logical>, anim: Animation, ) -> anyhow::Result<Self> { @@ -95,7 +95,7 @@ impl ClosingWindow { texture_scale: scale, texture_renderer_id: renderer.id(), block_out_from: snapshot.block_out_from, - center, + geo_size, pos, texture_offset, blocked_out_texture_offset, @@ -113,7 +113,7 @@ impl ClosingWindow { pub fn render( &self, - view_pos: i32, + view_rect: Rectangle<i32, Logical>, scale: Scale<f64>, target: RenderTarget, ) -> ClosingWindowRenderElement { @@ -141,14 +141,15 @@ impl ClosingWindow { let elem = PrimaryGpuTextureRenderElement(elem); + let center = self.geo_size.to_point().to_f64().downscale(2.); let elem = RescaleRenderElement::from_element( elem, - (self.center.to_f64() - offset).to_physical_precise_round(scale), + (center - offset).to_physical_precise_round(scale), (val / 5. + 0.8).max(0.), ); let mut location = self.pos.to_f64() + offset; - location.x -= view_pos as f64; + location.x -= view_rect.loc.x as f64; let elem = RelocateRenderElement::from_element( elem, location.to_physical_precise_round(scale), |
