]> git.mdlowis.com Git - proto/labwc.git/commitdiff
ssd: show squared corners when the view is tiled
authorJens Peters <jp7677@gmail.com>
Sat, 22 Jun 2024 13:12:12 +0000 (15:12 +0200)
committerJohan Malm <johanmalm@users.noreply.github.com>
Thu, 27 Jun 2024 21:29:11 +0000 (22:29 +0100)
include/ssd-internal.h
src/ssd/ssd-titlebar.c
src/ssd/ssd.c

index 639d143ea12afa71e6c43495a94028a369e18a26..fda196e6aaf7b952349709ea66bde612b1b23de6 100644 (file)
@@ -50,6 +50,7 @@ struct ssd {
         */
        struct {
                bool was_maximized;   /* To un-round corner buttons and toggle icon on maximize */
+               bool was_tiled_not_maximized;   /* To un-round corner buttons */
                struct wlr_box geometry;
                struct ssd_state_title {
                        char *text;
index cdbe4d3685bd1e80724ed3e75927e0cc404a2d21..87d0f2e92e0e2aa29af02a3ad66a88d60d018994 100644 (file)
@@ -117,11 +117,16 @@ ssd_titlebar_create(struct ssd *ssd)
 
        ssd_update_title(ssd);
 
-       if (view->maximized == VIEW_AXIS_BOTH) {
+       bool maximized = view->maximized == VIEW_AXIS_BOTH;
+       if (maximized) {
                set_squared_corners(ssd, true);
                set_maximize_alt_icon(ssd, true);
                ssd->state.was_maximized = true;
        }
+       if (view_is_tiled(view) && !maximized) {
+               set_squared_corners(ssd, true);
+               ssd->state.was_tiled_not_maximized = true;
+       }
 }
 
 static bool
@@ -187,11 +192,16 @@ ssd_titlebar_update(struct ssd *ssd)
        int width = view->current.width;
        struct theme *theme = view->server->theme;
 
-       bool maximized = (view->maximized == VIEW_AXIS_BOTH);
-       if (ssd->state.was_maximized != maximized) {
-               set_squared_corners(ssd, maximized);
-               set_maximize_alt_icon(ssd, maximized);
+       bool maximized = view->maximized == VIEW_AXIS_BOTH;
+       bool tiled_not_maximized = view_is_tiled(ssd->view) && !maximized;
+       if (ssd->state.was_maximized != maximized
+                       || ssd->state.was_tiled_not_maximized != tiled_not_maximized) {
+               set_squared_corners(ssd, maximized || tiled_not_maximized);
+               if (ssd->state.was_maximized != maximized) {
+                       set_maximize_alt_icon(ssd, maximized);
+               }
                ssd->state.was_maximized = maximized;
+               ssd->state.was_tiled_not_maximized = tiled_not_maximized;
        }
 
        if (width == ssd->state.geometry.width) {
index 2d382ca0dba29ace3d179a7437e2d3ec16cfd72b..2ed852ec17ac8600e2e6f343c2cf6d58b79be1df 100644 (file)
@@ -246,7 +246,7 @@ ssd_update_geometry(struct ssd *ssd)
                        ssd_extents_update(ssd);
                        ssd->state.geometry = current;
                }
-               bool maximized = (ssd->view->maximized == VIEW_AXIS_BOTH);
+               bool maximized = ssd->view->maximized == VIEW_AXIS_BOTH;
                if (ssd->state.was_maximized != maximized) {
                        ssd_border_update(ssd);
                        ssd_titlebar_update(ssd);
@@ -258,6 +258,12 @@ ssd_update_geometry(struct ssd *ssd)
                         */
                        ssd->state.was_maximized = maximized;
                }
+               bool tiled_and_not_maximized = view_is_tiled(ssd->view) && !maximized;
+               if (ssd->state.was_tiled_not_maximized != tiled_and_not_maximized) {
+                       ssd_titlebar_update(ssd);
+                       /* see above about being future proof */
+                       ssd->state.was_tiled_not_maximized = tiled_and_not_maximized;
+               }
                return;
        }
        ssd_extents_update(ssd);