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 | |
| 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')
| -rw-r--r-- | src/layout/closing_window.rs | 17 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 11 |
2 files changed, 13 insertions, 15 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), diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index ed16a776..a2515a76 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -1338,10 +1338,6 @@ impl<W: LayoutElement> Workspace<W> { let removing_last = col.tiles.len() == 1; let offset = self.column_x(col_idx + 1) - self.column_x(col_idx); - let mut center = Point::from((0, 0)); - center.x += tile.tile_size().w / 2; - center.y += tile.tile_size().h / 2; - tile_pos.x += self.view_pos(); if col_idx < self.active_column_idx && removing_last { @@ -1354,7 +1350,7 @@ impl<W: LayoutElement> Workspace<W> { renderer, snapshot, output_scale, - center, + tile.tile_size(), tile_pos, anim, ); @@ -2097,9 +2093,10 @@ impl<W: LayoutElement> Workspace<W> { let mut rv = vec![]; // Draw the closing windows on top. - let view_pos = self.view_pos(); + let view_rect = Rectangle::from_loc_and_size((self.view_pos(), 0), self.view_size); for closing in &self.closing_windows { - rv.push(closing.render(view_pos, output_scale, target).into()); + let elem = closing.render(view_rect, output_scale, target); + rv.push(elem.into()); } if self.columns.is_empty() { |
