]> git.mdlowis.com Git - proto/labwc.git/commitdiff
ssd-titlebar: show fallback icon when no app_id is set
authortokyo4j <hrak1529@gmail.com>
Sun, 23 Feb 2025 17:22:30 +0000 (02:22 +0900)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Sun, 23 Feb 2025 21:56:03 +0000 (22:56 +0100)
Before this commit, nothing was rendered in window icon button if the
application doesn't set its app_id (e.g. nested kwin_wayland). This was my
oversight in dc474521.

This commit makes sure fallback icon (set via <theme><fallbackAppIcon>)
by removing ssd->state.app_id and the early-return in
ssd_update_window_icon(). This doesn't affect performance because
scaled_icon_buffer caches app_id and scaled_icon_buffer_set_app_id() does
nothing when a duplicated app_id is passed.

include/ssd-internal.h
src/ssd/ssd-titlebar.c

index d46e7280d78d120890c651e80d5e24016705a84a..ec64311e0b6bb9ba74f0ea590ee4109d6358db25 100644 (file)
@@ -83,8 +83,6 @@ struct ssd {
                        struct ssd_state_title_width active;
                        struct ssd_state_title_width inactive;
                } title;
-
-               char *app_id;
        } state;
 
        /* An invisible area around the view which allows resizing */
index 2879b203e7f232ffa349bd0c99ff6a91d0411be6..bd0b66e64f0ebd64b69d77dc6e381084d7da1415 100644 (file)
@@ -343,9 +343,6 @@ ssd_titlebar_destroy(struct ssd *ssd)
        if (ssd->state.title.text) {
                zfree(ssd->state.title.text);
        }
-       if (ssd->state.app_id) {
-               zfree(ssd->state.app_id);
-       }
 
        wlr_scene_node_destroy(&ssd->titlebar.tree->node);
        ssd->titlebar.tree = NULL;
@@ -575,16 +572,12 @@ ssd_update_window_icon(struct ssd *ssd)
                return;
        }
 
+       /*
+        * When app id is not set, an empty string is stored here and the
+        * fallback icon is always rendered.
+        */
        const char *app_id = view_get_string_prop(ssd->view, "app_id");
-       if (string_null_or_empty(app_id)) {
-               return;
-       }
-       if (ssd->state.app_id && !strcmp(ssd->state.app_id, app_id)) {
-               return;
-       }
-
-       free(ssd->state.app_id);
-       ssd->state.app_id = xstrdup(app_id);
+       assert(app_id);
 
        struct ssd_sub_tree *subtree;
        FOR_EACH_STATE(ssd, subtree) {