From d7d16f1ac8866c013a1befbbe147db8dda134b20 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Wed, 29 Jul 2026 04:50:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(window):=20=E6=97=A0=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=A0=87=E9=A2=98=E6=8C=89=E4=BC=98=E5=85=88?= =?UTF-8?q?=E7=BA=A7=E5=9B=9E=E9=80=80=E6=98=BE=E7=A4=BA=20instance/class/?= =?UTF-8?q?app=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 window_get_showing_title,按 title → instance_name → class_name → app_id 优先级取显示标题,窗口快照改用该函数, 避免标题缺失时显示为空。 --- src/core/listeners.c | 3 ++- src/core/window.c | 8 ++++++++ src/core/window.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/core/listeners.c b/src/core/listeners.c index a698a54..fed169c 100644 --- a/src/core/listeners.c +++ b/src/core/listeners.c @@ -5,6 +5,7 @@ #include "core/binding.h" #include "core/layout.h" #include "core/state.h" +#include "core/window.h" #define FOR_EACH_LISTENER(FIELD, BODY) \ do { \ @@ -117,7 +118,7 @@ static bool listeners_window_snapshot( *out = (zdwm_window_t){ .workspace = window->workspace_id, .id = window->id, - .title = window->title, + .title = window_get_showing_title(window), .focused = workspace->focused_window_id == window->id, .urgent = window->urgent, .skip_taskbar = window->skip_taskbar, diff --git a/src/core/window.c b/src/core/window.c index d0b4385..ca722c2 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -145,3 +145,11 @@ bool window_can_resize(const window_t *window) { return true; } + +const char *window_get_showing_title(const window_t *window) { + if (window->title) return window->title; + if (window->instance_name) return window->instance_name; + if (window->class_name) return window->class_name; + if (window->app_id) return window->app_id; + return nullptr; +} diff --git a/src/core/window.h b/src/core/window.h index c566541..e3a3a48 100644 --- a/src/core/window.h +++ b/src/core/window.h @@ -67,3 +67,4 @@ bool window_need_resize(const window_t *window, int32_t width, int32_t height); bool window_should_has_border(const window_t *window); bool window_should_fix_size(const window_t *window); bool window_can_resize(const window_t *window); +const char *window_get_showing_title(const window_t *window);