diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-09-13 19:37:14 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-09-13 19:37:14 +0400 |
| commit | 46403bd84a8e7a35fa7bcbdc1c7b95639613888c (patch) | |
| tree | 50cb8654493368854033ab6b6648e0210b9a4975 /src/layout.rs | |
| parent | 219ca08836adcd91f42ca24ec20f643af17dd270 (diff) | |
| download | niri-46403bd84a8e7a35fa7bcbdc1c7b95639613888c.tar.gz niri-46403bd84a8e7a35fa7bcbdc1c7b95639613888c.tar.bz2 niri-46403bd84a8e7a35fa7bcbdc1c7b95639613888c.zip | |
layout: Correct view offset when swapping columns
Diffstat (limited to 'src/layout.rs')
| -rw-r--r-- | src/layout.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/layout.rs b/src/layout.rs index 3d85ecbe..68feb2b8 100644 --- a/src/layout.rs +++ b/src/layout.rs @@ -1523,7 +1523,19 @@ impl<W: LayoutElement> Workspace<W> { return; } + let current_x = self.view_pos(); + self.columns.swap(self.active_column_idx, new_idx); + + let new_x = self.column_x(self.active_column_idx) - PADDING; + let new_view_offset = compute_new_view_offset( + current_x, + self.view_size.w, + new_x, + self.columns[self.active_column_idx].size().w, + ); + self.view_offset = new_view_offset; + self.activate_column(new_idx); } @@ -1537,7 +1549,19 @@ impl<W: LayoutElement> Workspace<W> { return; } + let current_x = self.view_pos(); + self.columns.swap(self.active_column_idx, new_idx); + + let new_x = self.column_x(self.active_column_idx) - PADDING; + let new_view_offset = compute_new_view_offset( + current_x, + self.view_size.w, + new_x, + self.columns[self.active_column_idx].size().w, + ); + self.view_offset = new_view_offset; + self.activate_column(new_idx); } |
