diff options
| author | Filipe Paniguel <paniguel.lpnh@gmail.com> | 2024-06-28 11:44:24 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-28 07:44:24 -0700 |
| commit | bdf9894020f184643ac98fbbc74402689edfe3f4 (patch) | |
| tree | 1829fac0d2d224e161c6faa78db3f3163dcd3836 /src/input/mod.rs | |
| parent | d180e60e0584e0c43682d7aca612c366f881dd85 (diff) | |
| download | niri-bdf9894020f184643ac98fbbc74402689edfe3f4.tar.gz niri-bdf9894020f184643ac98fbbc74402689edfe3f4.tar.bz2 niri-bdf9894020f184643ac98fbbc74402689edfe3f4.zip | |
feat: add `focus-column-or-monitor-left`, `focus-column-or-monitor-right` (#456)
* feat: add support for focus-window-or-monitor
* addresses output without window case
* refactor: reduce verbosity
* update this..
* refactor: rename `maybe_focus_window` functions
* refactor: flip focus_window_or_output return logic
* Update src/layout/mod.rs
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
* refactor: rename to Column
* move blocks next to other Column variables
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Diffstat (limited to 'src/input/mod.rs')
| -rw-r--r-- | src/input/mod.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/input/mod.rs b/src/input/mod.rs index 59a4b436..5e775b03 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -596,6 +596,40 @@ impl State { // FIXME: granular self.niri.queue_redraw_all(); } + Action::FocusColumnOrMonitorLeft => { + if let Some(output) = self.niri.output_left() { + if self.niri.layout.focus_column_left_or_output(&output) + && !self.maybe_warp_cursor_to_focus_centered() + { + self.move_cursor_to_output(&output); + } else { + self.maybe_warp_cursor_to_focus(); + } + } else { + self.niri.layout.focus_left(); + self.maybe_warp_cursor_to_focus(); + } + + // FIXME: granular + self.niri.queue_redraw_all(); + } + Action::FocusColumnOrMonitorRight => { + if let Some(output) = self.niri.output_right() { + if self.niri.layout.focus_column_right_or_output(&output) + && !self.maybe_warp_cursor_to_focus_centered() + { + self.move_cursor_to_output(&output); + } else { + self.maybe_warp_cursor_to_focus(); + } + } else { + self.niri.layout.focus_right(); + self.maybe_warp_cursor_to_focus(); + } + + // FIXME: granular + self.niri.queue_redraw_all(); + } Action::FocusWindowDown => { self.niri.layout.focus_down(); self.maybe_warp_cursor_to_focus(); |
