]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: unify ssd_enabled and ssd_titlebar_hidden to ssd_mode
authortokyo4j <hrak1529@gmail.com>
Thu, 21 Aug 2025 04:45:58 +0000 (13:45 +0900)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sun, 24 Aug 2025 11:41:41 +0000 (12:41 +0100)
include/config/types.h
include/view.h
src/ssd/ssd.c
src/view.c

index 18d08700e32f01d6f24143fe51c4cd2922559717..7f90b151238fba27e7f9cd74156834436707f257 100644 (file)
@@ -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 {
index 4efb228315085c6efac7e12d214d4088201631ab..e7dce886ec79ed5b4739f51fefead63d72ec52f9 100644 (file)
@@ -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);
index 97338c265f405409ee7b8288bacbe082535d9a7d..db706085b493b03126bc377d7f22dfe16b30bbd6 100644 (file)
@@ -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);
        }
index ff863d3220fd8326658ba14e8d8bb8eece1a3189..75f8bad18a1d2180124db4e7b51c5f1e4c8fe0b1 100644 (file)
@@ -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;
        }