aboutsummaryrefslogtreecommitdiff
path: root/src/input/mod.rs
diff options
context:
space:
mode:
authorFilipe Paniguel <paniguel.lpnh@gmail.com>2024-06-28 11:44:24 -0300
committerGitHub <noreply@github.com>2024-06-28 07:44:24 -0700
commitbdf9894020f184643ac98fbbc74402689edfe3f4 (patch)
tree1829fac0d2d224e161c6faa78db3f3163dcd3836 /src/input/mod.rs
parentd180e60e0584e0c43682d7aca612c366f881dd85 (diff)
downloadniri-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.rs34
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();