From 943f5751ee008faf1ee5e745f10086c95ea5183d Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Thu, 21 Aug 2025 13:45:58 +0900 Subject: [PATCH] view: unify ssd_enabled and ssd_titlebar_hidden to ssd_mode --- include/config/types.h | 4 ++-- include/view.h | 5 ++--- src/ssd/ssd.c | 12 +++++------ src/view.c | 47 +++++++++++++++++------------------------- 4 files changed, 29 insertions(+), 39 deletions(-) diff --git a/include/config/types.h b/include/config/types.h index 18d08700..7f90b151 100644 --- a/include/config/types.h +++ b/include/config/types.h @@ -36,10 +36,10 @@ enum lab_rotation { }; enum lab_ssd_mode { - LAB_SSD_MODE_INVALID, - LAB_SSD_MODE_NONE, + LAB_SSD_MODE_NONE = 0, LAB_SSD_MODE_BORDER, LAB_SSD_MODE_FULL, + LAB_SSD_MODE_INVALID, }; enum lab_tristate { diff --git a/include/view.h b/include/view.h index 4efb2283..e7dce886 100644 --- a/include/view.h +++ b/include/view.h @@ -170,8 +170,7 @@ struct view { bool mapped; bool been_mapped; - bool ssd_enabled; - bool ssd_titlebar_hidden; + enum lab_ssd_mode ssd_mode; enum ssd_preference ssd_preference; bool shaded; bool minimized; @@ -534,7 +533,7 @@ bool view_is_tiled(struct view *view); bool view_is_tiled_and_notify_tiled(struct view *view); bool view_is_floating(struct view *view); void view_move_to_workspace(struct view *view, struct workspace *workspace); -enum lab_ssd_mode view_get_ssd_mode(struct view *view); +bool view_titlebar_visible(struct view *view); void view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode); void view_set_decorations(struct view *view, enum lab_ssd_mode mode, bool force_ssd); void view_toggle_fullscreen(struct view *view); diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index 97338c26..db706085 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -32,7 +32,7 @@ ssd_thickness(struct view *view) * in border-only deco mode as view->ssd would only be set * after ssd_create() returns. */ - if (!view->ssd_enabled || view->fullscreen) { + if (!view->ssd_mode || view->fullscreen) { return (struct border){ 0 }; } @@ -40,7 +40,7 @@ ssd_thickness(struct view *view) if (view->maximized == VIEW_AXIS_BOTH) { struct border thickness = { 0 }; - if (!view->ssd_titlebar_hidden) { + if (view_titlebar_visible(view)) { thickness.top += theme->titlebar_height; } return thickness; @@ -53,7 +53,7 @@ ssd_thickness(struct view *view) .left = theme->border_width, }; - if (view->ssd_titlebar_hidden) { + if (!view_titlebar_visible(view)) { thickness.top -= theme->titlebar_height; } return thickness; @@ -89,14 +89,14 @@ static enum ssd_part_type get_resizing_type(const struct ssd *ssd, struct wlr_cursor *cursor) { struct view *view = ssd ? ssd->view : NULL; - if (!view || !cursor || !view->ssd_enabled || view->fullscreen) { + if (!view || !cursor || !view->ssd_mode || view->fullscreen) { return LAB_SSD_NONE; } struct wlr_box view_box = view->current; view_box.height = view_effective_height(view, /* use_pending */ false); - if (!view->ssd_titlebar_hidden) { + if (view_titlebar_visible(view)) { /* If the titlebar is visible, consider it part of the view */ int titlebar_height = view->server->theme->titlebar_height; view_box.y -= titlebar_height; @@ -250,7 +250,7 @@ ssd_create(struct view *view, bool active) */ ssd_titlebar_create(ssd); ssd_border_create(ssd); - if (view->ssd_titlebar_hidden) { + if (!view_titlebar_visible(view)) { /* Ensure we keep the old state on Reconfigure or when exiting fullscreen */ ssd_set_titlebar(ssd, false); } diff --git a/src/view.c b/src/view.c index ff863d32..75f8bad1 100644 --- a/src/view.c +++ b/src/view.c @@ -80,6 +80,7 @@ view_query_create(void) struct view_query *query = znew(*query); query->window_type = -1; query->maximized = VIEW_AXIS_INVALID; + query->decoration = LAB_SSD_MODE_INVALID; return query; } @@ -206,8 +207,8 @@ view_matches_query(struct view *view, struct view_query *query) } } - enum lab_ssd_mode decor = view_get_ssd_mode(view); - if (query->decoration != LAB_SSD_MODE_INVALID && query->decoration != decor) { + if (query->decoration != LAB_SSD_MODE_INVALID + && query->decoration != view->ssd_mode) { return false; } @@ -1316,7 +1317,7 @@ view_apply_maximized_geometry(struct view *view) &natural.x, &natural.y); } - if (view->ssd_enabled) { + if (view->ssd_mode) { struct border border = ssd_thickness(view); box.x += border.left; box.y += border.top; @@ -1557,7 +1558,7 @@ view_set_decorations(struct view *view, enum lab_ssd_mode mode, bool force_ssd) assert(view); if (force_ssd || view_wants_decorations(view) - || mode < view_get_ssd_mode(view)) { + || mode < view->ssd_mode) { view_set_ssd_mode(view, mode); } } @@ -1567,10 +1568,9 @@ view_toggle_decorations(struct view *view) { assert(view); - enum lab_ssd_mode mode = view_get_ssd_mode(view); - if (rc.ssd_keep_border && mode == LAB_SSD_MODE_FULL) { + if (rc.ssd_keep_border && view->ssd_mode == LAB_SSD_MODE_FULL) { view_set_ssd_mode(view, LAB_SSD_MODE_BORDER); - } else if (mode != LAB_SSD_MODE_NONE) { + } else if (view->ssd_mode != LAB_SSD_MODE_NONE) { view_set_ssd_mode(view, LAB_SSD_MODE_NONE); } else { view_set_ssd_mode(view, LAB_SSD_MODE_FULL); @@ -1657,18 +1657,10 @@ undecorate(struct view *view) view->ssd = NULL; } -enum lab_ssd_mode -view_get_ssd_mode(struct view *view) +bool +view_titlebar_visible(struct view *view) { - assert(view); - - if (!view->ssd_enabled) { - return LAB_SSD_MODE_NONE; - } else if (view->ssd_titlebar_hidden) { - return LAB_SSD_MODE_BORDER; - } else { - return LAB_SSD_MODE_FULL; - } + return view->ssd_mode == LAB_SSD_MODE_FULL; } void @@ -1677,7 +1669,7 @@ view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode) assert(view); if (view->shaded || view->fullscreen - || mode == view_get_ssd_mode(view)) { + || mode == view->ssd_mode) { return; } @@ -1685,12 +1677,11 @@ view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode) * Set these first since they are referenced * within the call tree of ssd_create() and ssd_thickness() */ - view->ssd_enabled = mode != LAB_SSD_MODE_NONE; - view->ssd_titlebar_hidden = mode != LAB_SSD_MODE_FULL; + view->ssd_mode = mode; - if (view->ssd_enabled) { + if (mode) { decorate(view); - ssd_set_titlebar(view->ssd, !view->ssd_titlebar_hidden); + ssd_set_titlebar(view->ssd, view_titlebar_visible(view)); } else { undecorate(view); } @@ -1718,7 +1709,7 @@ set_fullscreen(struct view *view, bool fullscreen) } /* Hide decorations when going fullscreen */ - if (fullscreen && view->ssd_enabled) { + if (fullscreen && view->ssd_mode) { undecorate(view); } @@ -1730,7 +1721,7 @@ set_fullscreen(struct view *view, bool fullscreen) wl_signal_emit_mutable(&view->events.fullscreened, NULL); /* Re-show decorations when no longer fullscreen */ - if (!fullscreen && view->ssd_enabled) { + if (!fullscreen && view->ssd_mode) { decorate(view); } @@ -2393,7 +2384,7 @@ void view_reload_ssd(struct view *view) { assert(view); - if (view->ssd_enabled && !view->fullscreen) { + if (view->ssd_mode && !view->fullscreen) { undecorate(view); decorate(view); } @@ -2416,7 +2407,7 @@ view_toggle_keybinds(struct view *view) assert(view); view->inhibits_keybinds = !view->inhibits_keybinds; - if (view->ssd_enabled) { + if (view->ssd_mode) { ssd_enable_keybind_inhibit_indicator(view->ssd, view->inhibits_keybinds); } @@ -2498,7 +2489,7 @@ view_set_shade(struct view *view, bool shaded) } /* Views without a title-bar or SSD cannot be shaded */ - if (shaded && (!view->ssd || view->ssd_titlebar_hidden)) { + if (shaded && (!view->ssd || !view_titlebar_visible(view))) { return; }