From b18c169036ed41513971600983c0e812cd567be9 Mon Sep 17 00:00:00 2001 From: Zandr Martin Date: Sun, 31 Jul 2016 21:45:27 -0500 Subject: cache floating container size when fullscreening --- sway/commands.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/sway/commands.c b/sway/commands.c index 28dcc996..f0c9cc52 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -2501,6 +2501,30 @@ static struct cmd_results *cmd_fullscreen(int argc, char **argv) { swayc_t *workspace = swayc_parent_by_type(container, C_WORKSPACE); bool current = swayc_is_fullscreen(container); wlc_view_set_state(container->handle, WLC_BIT_FULLSCREEN, !current); + + if (container->is_floating) { + if (current) { + // set dimensions back to what they were before we fullscreened this + container->x = container->cached_geometry.origin.x; + container->y = container->cached_geometry.origin.y; + container->width = container->cached_geometry.size.w; + container->height = container->cached_geometry.size.h; + } else { + // cache dimensions so we can reset them after we "unfullscreen" this + struct wlc_geometry geo = { + .origin = { + .x = container->x, + .y = container->y + }, + .size = { + .w = container->width, + .h = container->height + } + }; + container->cached_geometry = geo; + } + } + // Resize workspace if going from fullscreen -> notfullscreen // otherwise just resize container if (!current) { -- cgit v1.2.3