backend: X11 后端 window 信息查询接口使用原始封装代替语义化封装

- 拆分 window_get_skip_taskbar / window_get_urgency /
  window_get_states / window_get_geometry_mode 为更底层的
  window_get_atom_array / window_get_wm_hints / atom_to_window_state
- window_get_fixed_size 改为输出参数风格
- 扁平化 window_map_request_event_t,内联原 window_props_t 和
  window_geometry_t 的字段
- window_props_t → window_layer_props_t,仅保留 layer 分类所需的
  types/states
This commit is contained in:
2026-04-09 05:08:39 +08:00
parent 3884d3fc50
commit 0c7fdf08df
7 changed files with 159 additions and 197 deletions

View File

@@ -64,9 +64,16 @@ typedef struct pointer_enter_event_t {
typedef struct window_map_request_event_t {
window_id_t window;
window_props_t props;
window_id_t transient_for;
bool override_redirect;
bool skip_taskbar;
bool urgent;
bool fixed_size;
window_geometry_mode_t geometry_mode;
rect_t rect;
window_layer_props_t props;
window_metadata_t metadata;
window_geometry_t geometry;
} window_map_request_event_t;
typedef enum window_remove_reason_t {

View File

@@ -88,7 +88,7 @@ bool layer_stack_lower(layer_stack_t *layer, window_id_t window) {
return true;
}
layer_type_t layer_classify(const window_props_t *props) {
layer_type_t layer_classify(const window_layer_props_t *props) {
for (size_t i = 0; i < props->type_count; ++i) {
window_type_t type = props->types[i];
if (type == ZDWM_WINDOW_TYPE_NOTIFICATION) return ZDWM_WINDOW_LAYER_OVERLAY;

View File

@@ -57,4 +57,4 @@ bool layer_stack_raise(layer_stack_t *layer, window_id_t window);
*/
bool layer_stack_lower(layer_stack_t *layer, window_id_t window);
layer_type_t layer_classify(const window_props_t *props);
layer_type_t layer_classify(const window_layer_props_t *props);

View File

@@ -30,19 +30,13 @@ typedef enum window_state_t {
ZDWM_WINDOW_STATE_STICKY,
} window_state_t;
typedef struct window_props_t {
window_id_t transient_for;
bool override_redirect;
bool skip_taskbar;
bool urgent;
typedef struct window_layer_props_t {
window_type_t *types;
size_t type_count;
window_state_t *states;
size_t state_count;
} window_props_t;
} window_layer_props_t;
typedef struct window_metadata_t {
char *title;
@@ -51,9 +45,3 @@ typedef struct window_metadata_t {
char *class_name;
char *instance_name;
} window_metadata_t;
typedef struct window_geometry_t {
window_geometry_mode_t mode;
rect_t rect;
bool fixed_size;
} window_geometry_t;