From 365dbacae7ed9b6dcee2c9a9281e9a531b842007 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 1 May 2024 19:00:11 +0400 Subject: Move unmap snapshot from Mapped to Tile --- src/layout/workspace.rs | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/layout/workspace.rs') diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index fd5662b8..1aa1a02b 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -1176,6 +1176,32 @@ impl Workspace { self.activate_column(column_idx); } + pub fn store_unmap_snapshot_if_empty(&mut self, renderer: &mut GlesRenderer, window: &W::Id) { + let (tile, _) = self + .tiles_in_render_order() + .find(|(tile, _)| tile.window().id() == window) + .unwrap(); + + // FIXME: workspaces should probably cache their last used scale so they can be correctly + // rendered even with no outputs connected. + let output_scale = self + .output + .as_ref() + .map(|o| Scale::from(o.current_scale().fractional_scale())) + .unwrap_or(Scale::from(1.)); + + tile.store_unmap_snapshot_if_empty(renderer, output_scale, self.view_size); + } + + pub fn clear_unmap_snapshot(&mut self, window: &W::Id) { + let (tile, _) = self + .tiles_in_render_order() + .find(|(tile, _)| tile.window().id() == window) + .unwrap(); + + let _ = tile.take_unmap_snapshot(); + } + pub fn start_close_animation_for_window( &mut self, renderer: &mut GlesRenderer, @@ -1194,9 +1220,7 @@ impl Workspace { .map(|o| Scale::from(o.current_scale().fractional_scale())) .unwrap_or(Scale::from(1.)); - let Some(snapshot) = - tile.take_snapshot_for_close_anim(renderer, output_scale, self.view_size) - else { + let Some(snapshot) = tile.take_unmap_snapshot() else { return; }; -- cgit