diff options
Diffstat (limited to 'src/command/send_to_output.zig')
| -rw-r--r-- | src/command/send_to_output.zig | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/command/send_to_output.zig b/src/command/send_to_output.zig index 09ce7ad..b626f93 100644 --- a/src/command/send_to_output.zig +++ b/src/command/send_to_output.zig @@ -4,8 +4,6 @@ const std = @import("std"); const Arg = @import("../command.zig").Arg; const Output = @import("../output.zig").Output; const Seat = @import("../seat.zig").Seat; -const ViewStack = @import("../view_stack.zig").ViewStack; -const View = @import("../view.zig").View; /// Send the focused view to the the next or the previous output, depending on /// the bool passed. Does nothing if there is only one output. @@ -17,23 +15,20 @@ pub fn sendToOutput(seat: *Seat, arg: Arg) void { if (seat.focused_view) |view| { // If the noop output is focused, there is nowhere to send the view - if (seat.focused_output == &root.noop_output) { + if (view.output == &root.noop_output) { std.debug.assert(root.outputs.len == 0); return; } // Send to the next/preg output in the list if there is one, else wrap - const focused_node = @fieldParentPtr(std.TailQueue(Output).Node, "data", seat.focused_output); - const target_output = switch (direction) { - .Next => if (focused_node.next) |node| &node.data else &root.outputs.first.?.data, - .Prev => if (focused_node.prev) |node| &node.data else &root.outputs.last.?.data, + const current_node = @fieldParentPtr(std.TailQueue(Output).Node, "data", view.output); + const destination_output = switch (direction) { + .Next => if (current_node.next) |node| &node.data else &root.outputs.first.?.data, + .Prev => if (current_node.prev) |node| &node.data else &root.outputs.last.?.data, }; // Move the view to the target output - const view_node = @fieldParentPtr(ViewStack(View).Node, "view", view); - seat.focused_output.views.remove(view_node); - target_output.views.push(view_node); - view.output = target_output; + view.sendToOutput(destination_output); // Handle the change and focus whatever's next in the focus stack root.arrange(); |
