feat(listeners): 调整通知结构体字段并补充文档注释

This commit is contained in:
2026-05-24 17:58:29 +08:00
parent 13fc41f141
commit 989a1ce6e8
3 changed files with 52 additions and 5 deletions

View File

@@ -30,13 +30,14 @@ typedef void zdwm_workspace_active_updated(
typedef struct zdwm_layout_notify_t {
zdwm_workspace_id_t workspace;
zdwm_layout_id_t id;
const char *symbol; /* 不持有内存 */
const char *name; /* 不持有内存 */
const char *symbol; /* 不持有内存 */
const char *description; /* 不持有内存 */
} zdwm_layout_notify_t;
typedef void zdwm_layout_notify(zdwm_layout_notify_t layout, void *user_data);
typedef struct zdwm_binding_mode_notify_t {
bool is_default_mode;
bool is_current_mode;
zdwm_binding_mode_id_t id;
const char *name; /* 不持有内存 */
} zdwm_binding_mode_notify_t;

View File

@@ -173,9 +173,11 @@ void listeners_notify_layout(
if (!slot) return;
zdwm_layout_notify_t notify = {
.workspace = workspace_id,
.id = layout_id,
.symbol = slot->symbol,
.workspace = workspace_id,
.id = layout_id,
.name = slot->name,
.symbol = slot->symbol,
.description = slot->description,
};
FOR_EACH_LISTENER(layout_listeners, item->fn(notify, item->user_data));

View File

@@ -95,43 +95,87 @@ void listeners_add_window_removed_listener(
);
void listeners_cleanup(listeners_t *listeners);
/**
* @brief 通知当前 output 信息
*
* @param listeners 通知函数集合
* @param output_id 当前 output id
*/
void listeners_notify_current_output(
const listeners_t *listeners,
output_id_t output_id
);
/**
* @brief 通知初始化 workspace 列表
*/
void listeners_notify_initial_workspaces(
const listeners_t *listeners,
const state_t *state
);
/**
* @brief 通知当前激活的 workspace 信息
*/
void listeners_notify_workspace_active(
const listeners_t *listeners,
output_id_t output_id,
workspace_id_t workspace_id
);
/**
* @brief 通知当前布局信息
*
* @param listeners 通知函数集合
* @param layouts 布局注册系统
* @param workspace_id 当前 workspace id
* @param layout_id 当前 workspace 的当前布局 id
*/
void listeners_notify_layout(
const listeners_t *listeners,
const layout_registry_t *layouts,
workspace_id_t workspace_id,
layout_id_t layout_id
);
/**
* @brief 通知当前绑定模式信息
*/
void listeners_notify_binding_mode(
const listeners_t *listeners,
const binding_table_t *binding_table
);
/**
* @brief 通知初始窗口列表
*/
void listeners_notify_initial_windows(
const listeners_t *listeners,
const state_t *state
);
/**
* @brief 通知新增窗口
*/
void listeners_notify_window_added(
const listeners_t *listeners,
const state_t *state,
window_id_t window_id
);
/**
* @brief 通知窗口信息更新
*/
void listeners_notify_window_updated(
const listeners_t *listeners,
const state_t *state,
window_id_t window_id
);
/**
* @brief 通知移除窗口
*/
void listeners_notify_window_removed(
const listeners_t *listeners,
window_id_t window_id