aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-12 08:46:02 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-12 08:46:02 +0400
commitd2ed42a157037f85a95b53da0431ac043922cea0 (patch)
treec8a74237be337e6f3873606d150e0665b12925b5 /src/layout
parent4073f9f52287781a438ddfad3a37b630394ba29d (diff)
downloadniri-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.rs17
-rw-r--r--src/layout/workspace.rs11
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() {