]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: Hide decorations for fullscreen views
authorJohn Lindgren <john@jlindgren.net>
Sat, 26 Nov 2022 07:25:02 +0000 (02:25 -0500)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sat, 26 Nov 2022 18:02:24 +0000 (18:02 +0000)
Otherwise the decorations are visible on adjacent outputs.

src/ssd/ssd.c
src/view.c

index 76c6a2b7d28355e649d0ab5e1fb6a206658b3e39..adf86c07bb9483cf970cd363193b9790c4d88f14 100644 (file)
 struct border
 ssd_thickness(struct view *view)
 {
-       if (!view->ssd_enabled) {
+       /*
+        * Check preconditions for displaying SSD. Note that this
+        * needs to work even before ssd_create() has been called.
+        */
+       if (!view->ssd_enabled || view->fullscreen) {
                return (struct border){ 0 };
        }
        struct theme *theme = view->server->theme;
index d9d7f10f3db04245cbea51a88addd771181bc9e9..d5d4834e7ff92f7e273469466e14903c09fc050d 100644 (file)
@@ -605,10 +605,15 @@ view_set_fullscreen(struct view *view, bool fullscreen,
                if (!view->maximized && !view->tiled) {
                        view_store_natural_geometry(view);
                }
+               /* Hide decorations when going fullscreen */
+               if (view->ssd_enabled) {
+                       ssd_destroy(view);
+               }
                view->fullscreen = wlr_output;
                view_apply_fullscreen_geometry(view, view->fullscreen);
        } else {
-               /* restore to normal */
+               view->fullscreen = false;
+               /* Restore non-fullscreen geometry */
                if (view->maximized) {
                        view_apply_maximized_geometry(view);
                } else if (view->tiled) {
@@ -616,7 +621,10 @@ view_set_fullscreen(struct view *view, bool fullscreen,
                } else {
                        view_apply_unmaximized_geometry(view);
                }
-               view->fullscreen = false;
+               /* Re-show decorations when no longer fullscreen */
+               if (view->ssd_enabled) {
+                       ssd_create(view, view == view->server->focused_view);
+               }
        }
 
        /* Show fullscreen views above top-layer */
@@ -875,7 +883,7 @@ void
 view_reload_ssd(struct view *view)
 {
        assert(view);
-       if (view->ssd_enabled) {
+       if (view->ssd_enabled && !view->fullscreen) {
                ssd_destroy(view);
                ssd_create(view, view == view->server->focused_view);
        }