From 392db7c04dd30d7137b3c22f32021bcd1baeb984 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Mon, 24 Feb 2025 02:22:30 +0900 Subject: [PATCH] ssd-titlebar: show fallback icon when no app_id is set 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 ) 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 | 2 -- src/ssd/ssd-titlebar.c | 17 +++++------------ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/include/ssd-internal.h b/include/ssd-internal.h index d46e7280..ec64311e 100644 --- a/include/ssd-internal.h +++ b/include/ssd-internal.h @@ -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 */ diff --git a/src/ssd/ssd-titlebar.c b/src/ssd/ssd-titlebar.c index 2879b203..bd0b66e6 100644 --- a/src/ssd/ssd-titlebar.c +++ b/src/ssd/ssd-titlebar.c @@ -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) {