From 4b2a7a28c672389ad3753dacba75c2f73f798e9b Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Tue, 28 Dec 2021 00:55:34 +0100 Subject: [PATCH] view:c Do not overwrite unmaximized dimensions on fullscreen Before: window -> maximize -> fullscreen -> unfullscreen would reset pre maximized state Now: window -> maximize -> fullscreen -> unfullscreen -> unmaximize works as expected --- src/view.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/view.c b/src/view.c index 3956f739..125c870b 100644 --- a/src/view.c +++ b/src/view.c @@ -223,10 +223,12 @@ view_set_fullscreen(struct view *view, bool fullscreen, view->toplevel_handle, fullscreen); } if (fullscreen) { - view->unmaximized_geometry.x = view->x; - view->unmaximized_geometry.y = view->y; - view->unmaximized_geometry.width = view->w; - view->unmaximized_geometry.height = view->h; + if (!view->maximized) { + view->unmaximized_geometry.x = view->x; + view->unmaximized_geometry.y = view->y; + view->unmaximized_geometry.width = view->w; + view->unmaximized_geometry.height = view->h; + } if (!wlr_output) { wlr_output = view_wlr_output(view); @@ -245,7 +247,16 @@ view_set_fullscreen(struct view *view, bool fullscreen, view_move_resize(view, box); } else { /* restore to normal */ - view_move_resize(view, view->unmaximized_geometry); + if (view->maximized) { + view->maximized = false; + view->x = view->unmaximized_geometry.x; + view->y = view->unmaximized_geometry.y; + view->w = view->unmaximized_geometry.width; + view->h = view->unmaximized_geometry.height; + view_maximize(view, true); + } else { + view_move_resize(view, view->unmaximized_geometry); + } view->fullscreen = false; } }