From d2ebd5e4e28c88efaf3afcba64cc83261100043a Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Fri, 31 Jul 2020 20:22:37 +0200 Subject: [PATCH] view: remember floating dimesions When a floating view is returned to the layout or made fullscreen, it now saves the dimesions it had while floating and returns to that same position/size if made to float again. --- river/command/toggle_float.zig | 7 ++++++- river/command/toggle_fullscreen.zig | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/river/command/toggle_float.zig b/river/command/toggle_float.zig index 8f57454..ac33d45 100644 --- a/river/command/toggle_float.zig +++ b/river/command/toggle_float.zig @@ -41,10 +41,15 @@ pub fn toggleFloat( view.pending.float = !view.pending.float; - // If switching from layout to float, restore the previous floating dimensions if (view.pending.float) { + // If switching from layout to float, restore the previous floating + // dimensions. view.pending.box = view.float_box; view.configure(); + } else { + // If switching from float to layout save the floating dimensions + // for next time. + view.float_box = view.current.box; } view.output.root.arrange(); diff --git a/river/command/toggle_fullscreen.zig b/river/command/toggle_fullscreen.zig index 6e2ac2d..92f99f3 100644 --- a/river/command/toggle_fullscreen.zig +++ b/river/command/toggle_fullscreen.zig @@ -41,6 +41,10 @@ pub fn toggleFullscreen( view.setFullscreen(!view.pending.fullscreen); if (view.pending.fullscreen) { + // If transitioning from float -> fullscreen, save the floating + // dimensions. + if (view.pending.float) view.float_box = view.current.box; + const output = view.output; view.pending.box = Box.fromWlrBox( c.wlr_output_layout_get_box(output.root.wlr_output_layout, output.wlr_output).*,