From 98347e454e4c38028cbcfb9ec5b52405e9c6d4e8 Mon Sep 17 00:00:00 2001 From: Jens Peters Date: Sat, 22 Jun 2024 15:12:12 +0200 Subject: [PATCH] ssd: show squared corners when the view is tiled --- include/ssd-internal.h | 1 + src/ssd/ssd-titlebar.c | 20 +++++++++++++++----- src/ssd/ssd.c | 8 +++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/include/ssd-internal.h b/include/ssd-internal.h index 639d143e..fda196e6 100644 --- a/include/ssd-internal.h +++ b/include/ssd-internal.h @@ -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; diff --git a/src/ssd/ssd-titlebar.c b/src/ssd/ssd-titlebar.c index cdbe4d36..87d0f2e9 100644 --- a/src/ssd/ssd-titlebar.c +++ b/src/ssd/ssd-titlebar.c @@ -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) { diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index 2d382ca0..2ed852ec 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -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); -- 2.52.0