]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view:c Do not overwrite unmaximized dimensions on fullscreen
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Mon, 27 Dec 2021 23:55:34 +0000 (00:55 +0100)
committerARDiDo <90479315+ARDiDo@users.noreply.github.com>
Tue, 28 Dec 2021 15:14:40 +0000 (10:14 -0500)
Before: window -> maximize -> fullscreen -> unfullscreen would reset pre maximized state
Now: window -> maximize -> fullscreen -> unfullscreen -> unmaximize works as expected

src/view.c

index 3956f73968c6106cbb5facb798da6b83ed86eec4..125c870b9832da93322a33f77a3a7a87386fb134 100644 (file)
@@ -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;
        }
 }