aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-10-05 09:28:07 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-10-15 09:04:16 +0300
commit80c22b805eedffcf8b4bcabb2cfab739af446797 (patch)
tree0c90f652ab5b581100af7daacb3587d403a88b8e
parentad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2 (diff)
downloadniri-80c22b805eedffcf8b4bcabb2cfab739af446797.tar.gz
niri-80c22b805eedffcf8b4bcabb2cfab739af446797.tar.bz2
niri-80c22b805eedffcf8b4bcabb2cfab739af446797.zip
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.
-rw-r--r--src/layout/mod.rs11
1 files 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<W: LayoutElement> Layout<W> {
};
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<W: LayoutElement> Layout<W> {
}
// 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() {