diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-22 10:40:26 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-30 20:12:37 +0300 |
| commit | 76a56352980fc9a646034c45e6f02093cc72fdb6 (patch) | |
| tree | 36318d5a487c073d2bfa80674166bf139d85da51 /src/layout/monitor.rs | |
| parent | f4f2a1f6deeffa5c13d871c534ac99ea398e9175 (diff) | |
| download | niri-76a56352980fc9a646034c45e6f02093cc72fdb6.tar.gz niri-76a56352980fc9a646034c45e6f02093cc72fdb6.tar.bz2 niri-76a56352980fc9a646034c45e6f02093cc72fdb6.zip | |
layout: Preserve the Tile when moving across workspaces
Diffstat (limited to 'src/layout/monitor.rs')
| -rw-r--r-- | src/layout/monitor.rs | 60 |
1 files changed, 36 insertions, 24 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs index 7bfc1084..844e932d 100644 --- a/src/layout/monitor.rs +++ b/src/layout/monitor.rs @@ -530,14 +530,18 @@ impl<W: LayoutElement> Monitor<W> { return; }; - self.add_window( - new_idx, - removed.tile.into_window(), - true, - removed.width, - removed.is_full_width, - removed.is_floating, - ); + if removed.is_floating { + self.add_floating_tile(new_idx, removed.tile, None, true); + } else { + self.add_tile( + new_idx, + None, + removed.tile, + true, + removed.width, + removed.is_full_width, + ); + } } pub fn move_to_workspace_down(&mut self) { @@ -553,14 +557,18 @@ impl<W: LayoutElement> Monitor<W> { return; }; - self.add_window( - new_idx, - removed.tile.into_window(), - true, - removed.width, - removed.is_full_width, - removed.is_floating, - ); + if removed.is_floating { + self.add_floating_tile(new_idx, removed.tile, None, true); + } else { + self.add_tile( + new_idx, + None, + removed.tile, + true, + removed.width, + removed.is_full_width, + ); + } } pub fn move_to_workspace(&mut self, window: Option<&W::Id>, idx: usize) { @@ -592,14 +600,18 @@ impl<W: LayoutElement> Monitor<W> { return; }; - self.add_window( - new_idx, - removed.tile.into_window(), - activate, - removed.width, - removed.is_full_width, - removed.is_floating, - ); + if removed.is_floating { + self.add_floating_tile(new_idx, removed.tile, None, activate); + } else { + self.add_tile( + new_idx, + None, + removed.tile, + activate, + removed.width, + removed.is_full_width, + ); + } if self.workspace_switch.is_none() { self.clean_up_workspaces(); |
