From 80c22b805eedffcf8b4bcabb2cfab739af446797 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 5 Oct 2025 09:28:07 +0300 Subject: layout: Fix anim jump when releasing interactive move in the overview Probably the tile window loc wasn't zoomed when it should. But also the interactive move grab case doesn't consider the window loc at all, which seems to work ok, so let's do that until a problem is found with it. --- src/layout/mod.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 134c9643..525b9eda 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -4129,7 +4129,7 @@ impl Layout { }; let win_id = move_.tile.window().id().clone(); - let window_render_loc = move_.tile_render_location(zoom) + move_.tile.window_loc(); + let tile_render_loc = move_.tile_render_location(zoom); let ws_idx = match insert_ws { InsertWorkspace::Existing(ws_id) => mon @@ -4226,18 +4226,17 @@ impl Layout { } // needed because empty_workspace_above_first could have modified the idx - let (tile, tile_render_loc, ws_geo) = mon + let (tile, tile_offset, ws_geo) = mon .workspaces_with_render_geo_mut(false) .find_map(|(ws, geo)| { ws.tiles_with_render_positions_mut(false) .find(|(tile, _)| tile.window().id() == &win_id) - .map(|(tile, tile_render_loc)| (tile, tile_render_loc, geo)) + .map(|(tile, tile_offset)| (tile, tile_offset, geo)) }) .unwrap(); - let new_window_render_loc = - ws_geo.loc + (tile_render_loc + tile.window_loc()).upscale(zoom); + let new_tile_render_loc = ws_geo.loc + tile_offset.upscale(zoom); - tile.animate_move_from((window_render_loc - new_window_render_loc).downscale(zoom)); + tile.animate_move_from((tile_render_loc - new_tile_render_loc).downscale(zoom)); } MonitorSet::NoOutputs { workspaces, .. } => { if workspaces.is_empty() { -- cgit