diff options
| author | FluxTape <fluxtape.contact@gmail.com> | 2024-03-19 14:27:52 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-19 07:27:52 -0700 |
| commit | 23ac3d73232f307186212293713d6801d37cff2a (patch) | |
| tree | 68d4e721a3c3e88cae2157a27cd28944d1eb3ea4 /src/input.rs | |
| parent | c3327d36da25f37e86eb8f89bd74f2a4bc1ea744 (diff) | |
| download | niri-23ac3d73232f307186212293713d6801d37cff2a.tar.gz niri-23ac3d73232f307186212293713d6801d37cff2a.tar.bz2 niri-23ac3d73232f307186212293713d6801d37cff2a.zip | |
Workspace back and forth (#253)
* implement workspace back and forth
* Make our own ID counter instead of SerialCounter, use a newtype
* Rename FocusWorkspaceBackAndForth to FocusWorkspacePrevious
* Add focus-workspace-previous to tests
* Don't special case in switch_workspace_previous
* Minor clean up
* Add switch_workspace_auto_back_and_forth to tests
* Skip animation on switch_workspace_previous
* Preserve previous_workspace_id on workspace movement
* Make Workspace::id private with a getter
Reduce the chance it gets overwritten.
* Add test for workspace ID uniqueness
* Update previous workspace ID upon moving workspace across monitors
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Diffstat (limited to 'src/input.rs')
| -rw-r--r-- | src/input.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/input.rs b/src/input.rs index 1d99f550..35a612bc 100644 --- a/src/input.rs +++ b/src/input.rs @@ -569,11 +569,23 @@ impl State { } Action::FocusWorkspace(idx) => { let idx = idx.saturating_sub(1) as usize; - self.niri.layout.switch_workspace(idx); + + let config = &self.niri.config; + if config.borrow().input.workspace_auto_back_and_forth { + self.niri.layout.switch_workspace_auto_back_and_forth(idx); + } else { + self.niri.layout.switch_workspace(idx); + } + self.maybe_warp_cursor_to_focus(); // FIXME: granular self.niri.queue_redraw_all(); } + Action::FocusWorkspacePrevious => { + self.niri.layout.switch_workspace_previous(); + // FIXME: granular + self.niri.queue_redraw_all(); + } Action::MoveWorkspaceDown => { self.niri.layout.move_workspace_down(); // FIXME: granular |
