主要变更: - 数据结构简化 - 合并窗口元数据到 wm_window_t(删除 wm_window_meta.h) - 合并工作区名称到 wm_workspace_t(删除 wm_workspace_desc.h) - 简化布局标识符,只保留 name 字段 - 删除 window_map,采用直接索引+线性查找 - 架构设计完善 - 确定 window→workspace→output 固定归属关系 - 制定 ID 分配策略(半静态实体直接索引,动态实体线性查找) - 确定显示器热插拔策略(检测到变化时重启 WM) - 添加工作区配置示例和多种配置方式 - 新增模块 - wm_policy_config.h:策略配置开关 - wm_service.h:核心外服务注册和事件订阅 - WM_EVENT_ROUTING.org:事件路由详细文档 - WORKSPACE_CONFIG_EXAMPLES.org:工作区配置示例 - MINIMAL_CORE_WITH_EXTENSIONS.org:设计对比文档 - config_system.org:配置系统设计 - 文档完善 - 大幅扩展 README.org,补充 ID 分配、热插拔、配置集成等说明 - 更新 WM_COMMAND_RULES.org,补充命令规则细节 - 更新 WM_POLICY_APPLY_COMMAND_SKELETON.org,完善实现骨架
112 lines
3.0 KiB
C
112 lines
3.0 KiB
C
#pragma once
|
|
|
|
#include "wm_types.h"
|
|
|
|
typedef enum wm_event_type_t {
|
|
WM_EVENT_NONE,
|
|
WM_EVENT_KEY_PRESS,
|
|
WM_EVENT_BUTTON_PRESS,
|
|
WM_EVENT_BUTTON_RELEASE,
|
|
WM_EVENT_POINTER_MOTION,
|
|
WM_EVENT_MAP_REQUEST,
|
|
WM_EVENT_UNMAP_NOTIFY,
|
|
WM_EVENT_DESTROY_NOTIFY,
|
|
WM_EVENT_WINDOW_METADATA_CHANGED,
|
|
WM_EVENT_CONFIGURE_REQUEST,
|
|
WM_EVENT_OUTPUT_CHANGED,
|
|
WM_EVENT_OUTPUT_REMOVED,
|
|
WM_EVENT_TIMER_TICK,
|
|
WM_EVENT_STATUS_TICK,
|
|
WM_EVENT_QUIT,
|
|
} wm_event_type_t;
|
|
|
|
typedef struct wm_key_press_event_t {
|
|
uint32_t keycode;
|
|
uint32_t modifiers;
|
|
} wm_key_press_event_t;
|
|
|
|
typedef struct wm_button_event_t {
|
|
uint32_t button;
|
|
uint32_t modifiers;
|
|
wm_point_t root;
|
|
wm_window_id_t target_window_id;
|
|
} wm_button_event_t;
|
|
|
|
typedef struct wm_pointer_motion_event_t {
|
|
wm_point_t root;
|
|
wm_window_id_t target_window_id;
|
|
} wm_pointer_motion_event_t;
|
|
|
|
typedef struct wm_map_request_event_t {
|
|
wm_window_id_t window_id;
|
|
} wm_map_request_event_t;
|
|
|
|
typedef struct wm_unmap_notify_event_t {
|
|
wm_window_id_t window_id;
|
|
} wm_unmap_notify_event_t;
|
|
|
|
typedef struct wm_destroy_notify_event_t {
|
|
wm_window_id_t window_id;
|
|
} wm_destroy_notify_event_t;
|
|
|
|
typedef enum wm_window_meta_changed_flags_t {
|
|
WM_WINDOW_META_CHANGED_NONE = 0,
|
|
WM_WINDOW_META_CHANGED_TITLE = 1u << 0,
|
|
WM_WINDOW_META_CHANGED_APP_ID = 1u << 1,
|
|
WM_WINDOW_META_CHANGED_CLASS = 1u << 2,
|
|
WM_WINDOW_META_CHANGED_INSTANCE = 1u << 3,
|
|
} wm_window_meta_changed_flags_t;
|
|
|
|
typedef struct wm_window_metadata_changed_event_t {
|
|
wm_window_id_t window_id;
|
|
uint32_t changed_fields;
|
|
/*
|
|
* These strings are borrowed from the backend adapter and are valid until
|
|
* wm_runtime_process_event() returns. changed_fields decides which ones are
|
|
* meaningful for the current event.
|
|
* runtime 会复制这些字符串到 wm_window_t 中的对应字段。
|
|
*/
|
|
const char *title;
|
|
const char *app_id;
|
|
const char *class_name;
|
|
const char *instance_name;
|
|
} wm_window_metadata_changed_event_t;
|
|
|
|
typedef struct wm_configure_request_event_t {
|
|
wm_window_id_t window_id;
|
|
wm_rect_t requested_rect;
|
|
} wm_configure_request_event_t;
|
|
|
|
typedef struct wm_output_changed_event_t {
|
|
wm_output_id_t output_id;
|
|
wm_rect_t geometry;
|
|
wm_rect_t workarea;
|
|
} wm_output_changed_event_t;
|
|
|
|
typedef struct wm_output_removed_event_t {
|
|
wm_output_id_t output_id;
|
|
} wm_output_removed_event_t;
|
|
|
|
typedef struct wm_timer_tick_event_t {
|
|
uint64_t now_ms;
|
|
} wm_timer_tick_event_t;
|
|
|
|
typedef struct wm_event_t {
|
|
wm_event_type_t type;
|
|
uint64_t ts_ms;
|
|
union {
|
|
wm_key_press_event_t key_press;
|
|
wm_button_event_t button_press;
|
|
wm_button_event_t button_release;
|
|
wm_pointer_motion_event_t pointer_motion;
|
|
wm_map_request_event_t map_request;
|
|
wm_unmap_notify_event_t unmap_notify;
|
|
wm_destroy_notify_event_t destroy_notify;
|
|
wm_window_metadata_changed_event_t window_metadata_changed;
|
|
wm_configure_request_event_t configure_request;
|
|
wm_output_changed_event_t output_changed;
|
|
wm_output_removed_event_t output_removed;
|
|
wm_timer_tick_event_t timer_tick;
|
|
} as;
|
|
} wm_event_t;
|