From d5cbc35811dc758753b4f74b05a8c439fd850d83 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Fri, 11 Oct 2024 19:52:03 +0300 Subject: Implement ConsumeOrExpelWindow{Left,Right} by id --- src/input/mod.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/input') diff --git a/src/input/mod.rs b/src/input/mod.rs index 763620f5..a89682b9 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -707,17 +707,39 @@ impl State { self.niri.queue_redraw_all(); } Action::ConsumeOrExpelWindowLeft => { - self.niri.layout.consume_or_expel_window_left(); + self.niri.layout.consume_or_expel_window_left(None); self.maybe_warp_cursor_to_focus(); // FIXME: granular self.niri.queue_redraw_all(); } + Action::ConsumeOrExpelWindowLeftById(id) => { + let window = self.niri.layout.windows().find(|(_, m)| m.id().get() == id); + let window = window.map(|(_, m)| m.window.clone()); + if let Some(window) = window { + self.niri.layout.consume_or_expel_window_left(Some(&window)); + self.maybe_warp_cursor_to_focus(); + // FIXME: granular + self.niri.queue_redraw_all(); + } + } Action::ConsumeOrExpelWindowRight => { - self.niri.layout.consume_or_expel_window_right(); + self.niri.layout.consume_or_expel_window_right(None); self.maybe_warp_cursor_to_focus(); // FIXME: granular self.niri.queue_redraw_all(); } + Action::ConsumeOrExpelWindowRightById(id) => { + let window = self.niri.layout.windows().find(|(_, m)| m.id().get() == id); + let window = window.map(|(_, m)| m.window.clone()); + if let Some(window) = window { + self.niri + .layout + .consume_or_expel_window_right(Some(&window)); + self.maybe_warp_cursor_to_focus(); + // FIXME: granular + self.niri.queue_redraw_all(); + } + } Action::FocusColumnLeft => { self.niri.layout.focus_left(); self.maybe_warp_cursor_to_focus(); -- cgit